HЕY!本主题与以下内容重复:Why does C# forbid generic attribute types?
我正在密切关注Roslyn编译器,并注意到泛型类型可用于属性。因此我的问题是:C#中有一个通用属性的好例子吗?
编辑:
事实证明,实际上他们不允许:
error CS0698: A generic type cannot derive from 'Attribute' because it is an attribute class
所以我的实际问题是:为什么会这样?
答案 0 :(得分:5)
ECMA-335( CustomAttribute ,§II.22.10)中定义的属性的元数据表示不允许属性的构造函数引用 MethodSpec 签名,意味着你永远不会真正使用通用属性,即使你可以声明一个。
C#语言是在考虑到这一限制的情况下编写的。具体限制包含在§10.1.4.1基类中(并且不会在§17属性中的任何位置重复)。