2017-01-19 2 views
0

マルチテクノロジーによって実装された一般的なサービスインターフェイスがあります。継承インターフェイスのメソッドに属性を追加する方法はありますか?

  1. IGenralService
  2. IWcfService IGenralService継承:

    は、例えば、I 2つのインターフェースを有しています。

ベースインタフェース:

public interface IGenralService 
    { 
     bool Login(string username, string password); 
    } 

そして、WCFサービス:

public interface IWcfService : IGenralService 
{ 
    [OperationContract(IsOneWay = false)] 
    [FaultContract(typeof(Exception))] 
    void DoSomething(); 
} 

IWcfServiceは、WCFに特異的であり、WCFメソッドの "OperationContract" 属性を必要としています。 「ログイン」メソッドには、属性「OperationContract」は含まれません。

固有のメソッドに属性を追加する方法はありますか?

+1

'IwcfService'が' IGeneralService'ではなく属性で修飾される 'Login'メソッドが必要ですか?これは基本的には意味がありません。インターフェイスを実装しているクラスがその属性を継承しない場合は、それらを再宣言する必要があります。とにかくインタフェースでそれらを省略することができます。 – HimBromBeere

答えて

2

属性をインターフェイスを実装するクラスに継承しないため、これは不可能であると思います。だから、基本的には、メンバーのインタフェースに属性を追加すると、クラス自体にこれを行う必要があり、非常に無駄です:

public class WcfService : IWcfService 
{ 
    [OperationContract(IsOneWay = false)] 
    [FaultContract(typeof(Exception))] 
    void DoSomething() { ... } 
} 

Alternativlyあなたが属性を継承できる、あなたもあなたのインターフェイス抽象クラスにすることができます。これを行う方法はthis postをご覧ください。

関連する問題