私はこのようなWCFセットアップを持っています
[ServiceContract]
public interface A {
[OperationContract( Name = "Log_1" )]
void Log( AuthTicket authTicket, string message );
}
[ServiceContract]
public interface B : A {
[OperationContract( Name = "Log_2" )]
void Log( AuthTicket authTicket, LogLevel level, string message );
}
私のプロキシ クラスでは、問題なく B.Log() を呼び出すことができます。Intellisense は A.Log() を認識しますが、実行時に呼び出すと例外が発生します。
このプロキシではメソッド ログはサポートされていません。これは、メソッドが OperationContractAttribute でマークされていない場合、またはインターフェイス タイプが ServiceContractAttribute でマークされていない場合に発生する可能性があります。
プロキシが A.Log() オーバーロードを「認識」できないのはなぜですか? A.Log() の宣言をインターフェイス B に移動すると機能するので、単なる名前の衝突ではありません。