gpt4 book ai didi

c# - 为什么 ICustomAttributeProvider.GetCustomAttributes() 返回 object[] 而不是 Attribute[]?

转载 作者:IT王子 更新时间:2023-10-29 04:34:42 25 4
gpt4 key购买 nike

为什么 ICustomAttributeProvider.GetCustomAttributes() 返回 object[] 而不是 Attribute[]

在使用 mscorlib 中的 ICustomAttributeProvider 实现时,系统程序集是否会返回非 Attribute 类型的对象?

最佳答案

CLI 规范 ( ECMA 335 ) 第 II 部分第 21 条部分规定:

While any user-defined type can be used as an attribute, CLS compliance requires that attributes will be instances of types whose base class is System.Attribute.

换句话说,不符合 CLS 的语言可能允许您指定不是从 Attribute 派生的属性,因此 GetCustomAttributes 方法可能旨在允许使用此类属性。

我很确定不存在这种不符合 CLS 的语言,并且 .NET 也不支持它,但可以想象 Reflection 的设计者不想排除 future 的可能性。

关于你的第二个问题,快速检查 System.Reflection 的源代码表明你总是得到一个 Attribute[] 。由于返回的对象始终是 Attribute[],您可以安全地转换它们,但不能保证它会始终以这种方式工作。

关于c# - 为什么 ICustomAttributeProvider.GetCustomAttributes() 返回 object[] 而不是 Attribute[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com