为什么C#中不允许使用通用属性?

时间:2014-02-16 22:26:43

标签: c# roslyn

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

所以我的实际问题是:为什么会这样?

1 个答案:

答案 0 :(得分:5)

ECMA-335( CustomAttribute ,§II.22.10)中定义的属性的元数据表示不允许属性的构造函数引用 MethodSpec 签名,意味着你永远不会真正使用通用属性,即使你可以声明一个。

C#语言是在考虑到这一限制的情况下编写的。具体限制包含在§10.1.4.1基类中(并且不会在§17属性中的任何位置重复)。