gpt4 book ai didi

c# - MemberInfo.GetCustomAttributes 扩展重载

转载 作者:行者123 更新时间:2023-11-30 13:54:14 27 4
gpt4 key购买 nike

我注意到在类 MemberInfo 的包 System.Reflection 中有两种方法(一种类方法和一种扩展方法)具有相同的签名但返回类型不同:

类方法:

public abstract object[] GetCustomAttributes(Type attributeType, bool inherit)

扩展方法(CustomAttributeExtensions 内):

public static IEnumerable<Attribute> GetCustomAttributes(this MemberInfo element, Type attributeType, bool inherit)

我知道用这样的参数调用那个方法总是会调用类方法,所以我只是想知道:

如何调用扩展方法?

最重要的是,定义与类方法具有相同签名的扩展的目的是什么?

最佳答案

在一个框架中有这种重复并不是一个特性。但这是一个困难重重的地方,他们不得不在 .NET 4.5 中添加扩展方法。从 MSDN 文章底部的版本信息 block 中最容易看到。扩展方法在 UWP 和 Phone 项目中可用,旧方法不可用。

根本原因是 CLR 4.5 中内置的语言投影。它使 WinRT 和 CLR 类型之间的相当大的差异高度不可见。如果程序员知道它实际上是为 UWP 提供支持的引擎盖下的 COM,那么 WinRT 将会死去,比现在更多 :) 隐藏得很好,但是 Type 类与 CLR 结合得太紧密了,他们不得不提供 TypeInfo 类作为替代。以及弥合 api 差距的扩展方法。

如果您不以 UWP 为目标,那么您对扩展方法没有太多用处,应该倾向于使用旧方法。扩展方法is about 30% slower .

关于c# - MemberInfo.GetCustomAttributes 扩展重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965286/

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