2017-01-19 4 views
0

Il existe une interface de service général qui a été implémentée par des technologies multiples.Est-il possible d'ajouter des attributs aux méthodes d'héritage de l'interface?

Par exemple, j'ai 2 interfaces:

  1. IGenralService
  2. IWcfService héritant de IGenralService.

L'interface de base:

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

Et le service WCF:

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

Le IWcfService est spécifique pour WCF et ont besoin d'attribut "OperationContract" pour les méthodes de WCF. La méthode "Login" n'inclut pas l'attribut "OperationContract".

Est-il possible d'ajouter un attribut à la méthode inhérente?

+1

Vous voulez que la méthode 'Login' pour' IWcfService' soit décorée avec un attribut, mais pas pour 'IGeneralService'? C'est fondamentalement non-sens car toute classe implémentant l'une de vos interfaces n'hérite pas de ses attributs, vous devrez les déclarer à nouveau. Donc, vous pouvez les omettre dans l'interface de toute façon. – HimBromBeere

Répondre

2

Je suppose que cela n'est pas possible, car les attributs ne sont pas hérités des classes implémentant une interface. Ainsi, l'ajout d'attributs essentiellement à est tout à fait inutile membres interface, vous devez le faire sur les classes elles-mêmes:

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

Alternativly vous pouvez également faire votre interface une classe abstraite dans laquelle vous pouvez hériter des attributs. Jetez un oeil à this post pour savoir comment faire.