sma*_*man 21 .net c# system.reflection getcustomattributes
为什么ICustomAttributeProvider.GetCustomAttributes()返回object[]而不是Attribute[]?
在使用ICustomAttributeProvidermscorlib 的实现时是否有任何情况,系统程序集将返回非类型的对象Attribute?
Gab*_*abe 23
CLI规范(ECMA 335)分区II,第21条部分规定:
虽然任何用户定义的类型都可以用作属性,但CLS合规性要求属性将是基类类型的实例
System.Attribute.
换句话说,不符合CLS的语言可能允许您指定不派生的属性Attribute,因此该GetCustomAttributes方法可能旨在允许使用此类属性.
我很确定没有这种非CLS兼容的语言,并且.NET不支持它,但可以想象,Reflection的设计者不希望将来排除这种可能性.
至于你的第二个问题,快速检查System.Reflection你总是得到Attribute[]回来的节目的源代码.由于返回的对象始终是Attribute[],您可以安全地投射它们,但不能保证它始终以这种方式工作.