WCFサービス用に[ServiceContract]
とマークされたインターフェイスがあります。 しかし、私のコードでは2つの異なるWCF以外の場所でも使用されています。ServiceContractインターフェイスの追加
問題は、WCFプロジェクトではなく[ServiceContract]
とマークされているインターフェイスを使用していることです。
コードを複製せずにWCFコンテキストでのみこの属性を使用する方法はありますか?
WCFサービス用に[ServiceContract]
とマークされたインターフェイスがあります。 しかし、私のコードでは2つの異なるWCF以外の場所でも使用されています。ServiceContractインターフェイスの追加
問題は、WCFプロジェクトではなく[ServiceContract]
とマークされているインターフェイスを使用していることです。
コードを複製せずにWCFコンテキストでのみこの属性を使用する方法はありますか?
WCF以外の場所でWCFコントラクト定義を使用しているのはなぜですか?そのインターフェイスがWCF実装の詳細であるという事実です。他のコードでWCFに関連しないインターフェイスを定義し、WCFと通信する必要がある場合は、WCFインターフェイスに転送するアダプタを記述します。
本の追加の利点は、あなたがその中に絶縁境界を与えることがあるが、WCFの契約に変更し、あなたの他のコード
interface IFoo
{
void DoSomething();
}
[ServiceContract]
interface IWCFFoo
{
[OperationContract]
void DoSomething();
}
class FooAdapter : IFoo
{
IWCFFoo wrapped;
public FooAdapter(IWCFFoo wrapped)
{
this.wrapped = wrapped;
}
public void DoSomething()
{
wrapped.DoSomething();
}
}
に出血する必要はありません。また、それはさまざまな種類がIFoo上で使用することができますし、 IWCFFooので、DataContract DTOがコードの残りの部分に流出しないようにしてください
あなたは、条件付きコンパイルディレクティブを使用することができます。
#if WCF
[ServiceContract]
#endif
public interface ...
次に、あなたのWCFプロジェクトでWCFトークンを定義します。
属性を追加できるこのようなアダプタを追加する方法の例を教えてください。 –
詳細を追加 –