- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到在类 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/
我需要能够从类的基类中的方法中检索类的自定义属性。现在,我通过基类中的 protected 静态方法使用以下实现来完成此操作(该类可以应用相同属性的多个实例): //Defined in a 'Bas
我目前有一个功能: public static Attribute GetAttribute(MemberInfo Member, Type AttributeType) { Object[]
我已经定义了一个自定义属性 [AttributeUsage(AttributeTargets.Property )] public class FieldAttribute: Attribute {
在我的解决方案中的 MiddleTier 项目中,我有 Customer 类,其中一个是用 Attribute1 定义的 public class Customer2 { public str
我已经与这个问题斗争了几个小时,但我找不到任何关于 SO(或谷歌)的相关信息。 这是我的问题: 我有一个包含对象数组属性的自定义属性。 [System.AttributeUsage(System.At
我遇到了性能问题,因为我使用反射和 GetCustomAttributes 进行数据访问。性能分析器检测到它。我有这样的扩展方法: public static class DataRowExtensi
我注意到在类 MemberInfo 的包 System.Reflection 中有两种方法(一种类方法和一种扩展方法)具有相同的签名但返回类型不同: 类方法: public abstract obje
有人可以向我解释为什么 Value.GetType().GetCustomAttribute 返回 null 吗?我已经查看了十个不同的教程,了解如何获取枚举类型成员的属性。无论我使用哪种 GetCu
我目前正在努力将 Windows 8.1 通用应用程序升级为 Windows 10 UWP 应用程序。有一部分代码在我的 Windows 10 UWP 应用程序中不再工作之前运行良好。 我有一个看起来
我正在尝试找出从属性中获取自定义属性的最佳方法。我一直在使用 GetCustomAttributes()为此,但我最近读到 GetCustomAttributes() 会导致创建属性的实例,并且 Ge
标题基本概括了所有内容。当我通过我的类进行一些反射时, MemberInfo.GetCustomAttributes() 方法是否会保留成员上的属性顺序?官方文档没有以任何方式说明任何内容。 如果你想
为什么不GetCustomAttributes(true)返回属性 AttributeUsageAttribute.Inherited = false ?在我看到的文档中没有任何内容表明这两者应该相互
MSDN 文档:MemberInfo.GetCustomAttibutes Method (Type, Boolean)备注中指出: This method ignores the inherit p
我有一个 List . TransformationItem只是多个类的基类,例如ExtractTextTransform和 InsertTextTransform 为了使用内置的 XML 序列化和反
我正在向 .NET 应用程序添加“关于”对话框,并且正在查询程序集的属性以获取要显示的信息。当我尝试检索程序集的 AssemblyVersionAttribute 时使用GetCustomAttrib
public enum Animal { [Description("King of jungle")] Lion= 1, [Description("Tallest ther
我正在尝试从类中获取属性,但似乎没有 GetCustomAttributes 方法。 CoreCLR中如何获取属性? using System.Reflection; class FooBar {
我有一些代码来定义自定义属性,然后读入代码,它无法工作。为了尝试解决问题,我返回并尝试使用 DisplayName,但是,我仍然遇到相同的问题 GetCustomAttribute 或 GetCust
考虑这样一种情况,其中一个程序集包含一个或多个具有自定义属性 MyAttribute 的类型,您需要获取这些类型的列表。使用 IsDefined 有什么好处吗?与 GetCustomAttribute
我今天注意到,我的 .NET 4.5 项目的 System.Type 对象的智能感知中出现了一些新属性。其中有一个称为 CustomAttributes。 我对此很感兴趣,因为我之前了解到 GetCu
我是一名优秀的程序员,十分优秀!