获取枚举值的自定义属性
本文关键字:自定义属性 枚举 获取 | 更新日期: 2023-09-27 18:35:21
在WinRT .NET应用程序(C#)中,我想获取在枚举值上定义的自定义属性。以以下枚举为例:
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
现在在"普通".NET 中,我知道我能够使用 enumValue.GetType().GetMember(enumValue.ToString())
获取枚举值的自定义属性。
遗憾的是,在 WinRT .NET 中,GetMember()
方法在 Type 类上不可用。
有什么建议怎么做吗?
====
=======================================================感谢下面的马克,我找到了答案!以下代码用于从 .NET 4.5 WinRT 中的枚举值获取特定的自定义属性:
public static class EnumHelper
{
public static T GetAttribute<T>(this Enum enumValue)
where T : Attribute
{
return enumValue
.GetType()
.GetTypeInfo()
.GetDeclaredField(enumValue.ToString())
.GetCustomAttribute<T>();
}
}
与其寻找成员,不如专门寻找字段。如果在 WinRT 的Type
上不可用,请添加using System.Reflection;
并使用type.GetTypeInfo()
,并在此处查看,因为各种反射方面将移动到类型信息。