あなたは、単にすなわち、サービス・warpperのタイプのインターフェースとインターフェースを拡張することができます:
public interface IMyCode
{
string GetResult();
}
[ServiceContract]
public interface IMyCodeService : IMyCode
{
[OperationContract]
string GetResult();
}
C#は、インターフェイスの継承を可能にし、コンパイラはそれがIMyCode.GetResult
メソッドを隠すためIMyCodeService.GetResult
が新しいが必要であると警告を吐き出すます
class Program
{
static void Main(string[] args)
{
MyCodeService service = new MyCodeService();
IMyCodeService serviceContract = (IMyCodeService)service;
IMyCode codeContract = (IMyCode)service;
service.GetResult();
serviceContract.GetResult();
codeContract.GetResult();
Console.ReadKey();
}
}
public interface IMyCode
{
void GetResult();
}
public interface IMyCodeService : IMyCode
{
void GetResult();
}
public class MyCodeService : IMyCodeService
{
public void GetResult()
{
Console.Write("I am here");
}
}
こうすることで、あなたが変更することなく、既存のインタフェースに基づいてサービス契約を提供することができますが、ないnew
は実装を壊さないであろう、一例として追加既存のコード。
プロキシを生成するためにWCFを使用する代わりに契約アセンブリを共有する場合、サービスインタフェースはサービスインタフェースを継承するため、既存のインタフェースを受け入れる場所にサービスコントラクトを渡すこともできます。
'[OperationContract]'に継承されたインタフェースに 'new'キーワードを追加するべきではありませんか? –