WinRT .NETアプリケーション(C#)で、列挙値で定義されているカスタム属性を取得したいと思います。たとえば、次の列挙型を取り上げます。
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
これで、「通常の」.NETで、。を使用して列挙値のカスタム属性を取得できることがわかりましたenumValue.GetType().GetMember(enumValue.ToString())
。
残念ながら、WinRT .NETでは、このGetMember()
メソッドはTypeクラスでは使用できません。
これをどうやってやるのか提案はありますか?
================================================== ===
以下のマークのおかげで、私は答えを見つけました!次のコードは、.NET4.5WinRTの列挙値から特定のカスタム属性を取得するために機能します。
public static class EnumHelper
{
public static T GetAttribute<T>(this Enum enumValue)
where T : Attribute
{
return enumValue
.GetType()
.GetTypeInfo()
.GetDeclaredField(enumValue.ToString())
.GetCustomAttribute<T>();
}
}