- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
考虑这样一种情况,其中一个程序集包含一个或多个具有自定义属性 MyAttribute
的类型,您需要获取这些类型的列表。使用 IsDefined 有什么好处吗?与 GetCustomAttributes除了更紧凑的语法?一个人是否公开/隐藏了另一个人没有的东西?一个比另一个更有效吗?
下面是演示每种用法的代码示例:
Assembly assembly = ...
var typesWithMyAttributeFromIsDefined =
from type in assembly.GetTypes()
where type.IsDefined(typeof(MyAttribute), false)
select type;
var typesWithMyAttributeFromGetCustomAttributes =
from type in assembly.GetTypes()
let attributes = type.GetCustomAttributes(typeof(MyAttribute), false)
where attributes != null && attributes.Length > 0
select type;
最佳答案
用这两种方法做了一个快速测试,似乎 IsDefined
比 GetCustomAttributes
快很多
200000 次迭代
IsDefined average Ticks = 54
GetCustomAttributes average Ticks = 114
希望这有帮助:)
关于c# - 使用 IsDefined 而不是 GetCustomAttributes 有好处吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719104/
我需要能够从类的基类中的方法中检索类的自定义属性。现在,我通过基类中的 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
我是一名优秀的程序员,十分优秀!