有没有办法为继承接口的方法添加属性?

时间:2017-01-19 15:17:22

标签: c# wcf inheritance interface operationcontract

有多种技术实现的通用服务接口。

例如,我有2个接口:

  1. IGenralService
  2. 继承自IGenralService的IWcfService。
  3. 基础界面:

        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 个答案:

答案 0 :(得分:2)

我认为这是不可能的,因为属性不会继承到实现接口的类。所以基本上向接口成员添加属性是没用的,你必须在类本身上执行此操作:

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

另外,您还可以将接口设置为抽象类,从而可以继承属性。请查看this post了解如何执行此操作。