1. ホーム
  2. c#

WCFでメソッドのオーバーロードが許されない理由とは?

2023-10-17 06:53:11

質問

と仮定すると、これは ServiceContract

[ServiceContract]
public interface MyService
{
    [OperationContract]
    int Sum(int x, int y);

    [OperationContract]
    int Sum(double x, double y);

}

C#ではメソッドのオーバーロードが許されていますが、WCFでは、メソッドをオーバーロードするために operation contracts ホスティングプログラムは InvalidOperationException を投げます。

どのように解決するのですか?

一言で言えば、メソッドをオーバーロードできない理由は、WSDL が C# 内に存在するのと同じオーバーロードの概念をサポートしていないという事実と関係があります。次の投稿では、これが不可能な理由の詳細を説明します。

http://jeffbarnes.net/blog/post/2006/09/21/Overloading-Methods-in-WCF.aspx

この問題を回避するために、明示的に Name プロパティに OperationContract .

[ServiceContract]
public interface MyService
{
    [OperationContract(Name="SumUsingInt")]
    int Sum(int x, int y);

    [OperationContract(Name="SumUsingDouble")]
    int Sum(double x, double y);
}