当前位置: 代码迷 >> C# >> GetCustomAttributes 有没有也许得到不是Attribute类型的对象
  详细解决方案

GetCustomAttributes 有没有也许得到不是Attribute类型的对象

热度:271   发布时间:2016-05-05 05:19:09.0
GetCustomAttributes 有没有可能得到不是Attribute类型的对象?
比如Type,Assembly之类的这个方法

现在GetCustomAttributes返回的是 object[],用起来还要转换一下,略麻烦。不知道这个方法的返回值为什么不设置成Attribute[],是不是有什么原因
------解决思路----------------------
通用语言基础架构里注明(CLS)attribute不一定是Attribute的子类。通用语言运行平台(CLR,也就是你运行.NET的低基),无法保证返回值一定是Attribute类。非CLS兼容语言可以自定义attribute类型,所以返回的就不一定是Attribute了。ICustomAttributeProvider.GetCustomAttributes接口就需要指定如何获取非Attribute为父类的attribute。而MemberInfo.GetCustomAttributes实现了这个接口,所以自然就返回对象组了。

通用语言基础架构(Common Language Infrastructure,简称CLI)是一个开放的技术规范。它是由微软联合惠普以及英特尔于2000年向ECMA倡议的。通用语言基础架构定义了构成.NET Framework基础结构的可执行码以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无需修正即可将软件运行在不同的计算机体系结构上。
  相关解决方案