2017-01-19 8 views
0

Существует общий сервисный интерфейс, реализованный несколькими технологиями.Есть ли способ добавить атрибуты к методам наследования интерфейса?

Например, у меня есть 2 интерфейса:

  1. IGenralService
  2. IWcfService, наследуемых от IGenralService.

Базовый интерфейс:

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

И сервис ФОС:

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

IWcfService специфичен для ФОС и нужен атрибут "OperationContract" для методов ФОС. Метод «Login» не включает атрибут «OperationContract».

Можно ли добавить атрибут к встроенному методу?

+1

Вы хотите, чтобы 'Login'-метод для' IWcfService' был украшен атрибутом, но не для 'IGeneralService'? Это в основном не имеет смысла, поскольку любой класс, реализующий любой из ваших интерфейсов, не наследует его атрибуты, вам придется повторно объявить их. Таким образом, вы можете опустить их в интерфейсе. – HimBromBeere

ответ

2

Я полагаю, это невозможно, поскольку атрибуты не наследуются классам, реализующим интерфейс. Таким образом, в основном, добавление атрибутов интерфейса-членов совершенно бесполезно, вы должны сделать это сами классы:

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

Alternativly вы также можете сделать свой интерфейс абстрактного класса, в котором вы можете наследовать атрибуты. Посмотрите на this post, как это сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^