我想在属性中添加属性作为接口契约的一部分。我读到这是不可能的,因为它确实为类增加了行为,这是一个没有使用/制作接口的东西。但如果是这样的话,为什么它会编译而不是发出错误,如果它根本没有效果或我错过了什么?
public class MyAttr : Attribute { }
public interface MyInterface
{
[MyAttr]
string Foo { get; set; }
}
public class MyClass : MyInterface
{
public string Foo { get; set; }
}
答案 0 :(得分:6)
您可以根据规范向接口成员添加属性:
17.2属性规范
可以在全局范围指定属性(以指定属性) 包含程序集或模块)和类型声明(第9.6节), class-member-declarations(第10.1.5节),interface-member-declarations (§13.2),......