如果接口中的属性不受支持,为什么要编译?

时间:2016-02-18 20:05:39

标签: c# .net interface attributes

我想在属性中添加属性作为接口契约的一部分。我读到这是不可能的,因为它确实为类增加了行为,这是一个没有使用/制作接口的东西。但如果是这样的话,为什么它会编译而不是发出错误,如果它根本没有效果或我错过了什么?

public class MyAttr : Attribute { }

public interface MyInterface
{
    [MyAttr]
    string Foo { get; set; }
}

public class MyClass : MyInterface
{
    public string Foo { get; set; }
}

1 个答案:

答案 0 :(得分:6)

您可以根据规范向接口成员添加属性:

17.2属性规范

  

可以在全局范围指定属性(以指定属性)   包含程序集或模块)和类型声明(第9.6节),   class-member-declarations(第10.1.5节),interface-member-declarations   (§13.2),......