获取枚举值的自定义属性
在WinRT .NET应用程序(C#)中,我想获取在枚举值上定义的自定义属性。 以下面的枚举为例:
public enum MyEnum { [Display(Name="Foo")] EnumValue1, [Display(Name="Bar")] EnumValue2 }
现在在“普通”.NET中,我知道我能够使用enumValue.GetType().GetMember(enumValue.ToString())
获取枚举值的自定义属性enumValue.GetType().GetMember(enumValue.ToString())
。
不幸的是,在WinRT .NET中,Type类上没有GetMember()
方法。
有什么建议怎么搭配?
================================================== ===
感谢下面的Marc,我找到了答案 ! 以下代码用于从.NET 4.5 WinRT中的枚举值获取特定的自定义属性:
public static class EnumHelper { public static T GetAttribute(this Enum enumValue) where T : Attribute { return enumValue .GetType() .GetTypeInfo() .GetDeclaredField(enumValue.ToString()) .GetCustomAttribute(); } }
您可能应该专门查看字段,而不是寻找成员 。 如果在WinRT中的Type
上不可用,请using System.Reflection;
添加using System.Reflection;
并使用type.GetTypeInfo()
并在那里查看,因为各种reflection方面被移动到type-info。
- 如何在Windows中(在用户模式下)限制应用程序域级别的带宽?
- Asp.Net MVC3:在ValidationContext中设置自定义IServiceProvider,以便validation器可以解析服务
- 使用HttpWebRequest收到截断的响应
- 打开使用System.IO.Compression创建的ZipArchive时出现C#.NET缺失方法exception
- 将表单移动到指定的屏幕
- C#中的指针?
- Visual Studio 2012 – 在.NET 4.5框架中找不到System.Transactions程序集
- DataGridView和List 的DataBinding与BindingSource
- LINQ to SQL类序列化时的循环引用exception