获取用属性标记的类中的所有属性
本文关键字:属性 获取 | 更新日期: 2023-09-27 18:03:01
我已经生成了一个自定义属性,它简单地将类属性标记为'显示名称'。我想做的是找到一个给定的类中的属性,它已被标记为我的属性。据我所知,我能做到这一点的唯一方法是循环遍历每个属性(通过反射)并检查它分配了哪些属性。还有比这更容易/更快的方法吗?
foreach (PropertyInfo property in myClassProperties)
{
//Get the alias attributes.
object[] attr=
property.GetCustomAttributes(typeof(DisplayField), true);
if(attr.Count() > 0)
{
// This is a display field!
}
}
谢谢
这个比检查它的所有属性来找到你想要的稍微简单一点-你可以使用IsDefined
:
var properties = type.GetProperties()
.Where(p => p.IsDefined(typeof(MyAttribute), false));
显然,如果你要多次使用它,你可以根据每个类型缓存结果。
据我所知,我能做到这一点的唯一方法是循环遍历每个属性(通过反射)并检查它分配了哪些属性。
就是这么做的。属性是在编译时嵌入程序集的元数据。为了在运行时访问它们,你需要反射。
我所知道的唯一更快的方法是静态或单例创建字典…这样以后的访问就更快了。我有时会这样做,但我完全按照您上面概述的检索属性功能来做。