En una aplicación WinRT .NET (C#) quiero obtener los atributos personalizados, que se definen en un valor enum. Tome la siguiente enumeración por ejemplo:Obtener atributos personalizados de valor enum
public enum MyEnum
{
[Display(Name="Foo")]
EnumValue1,
[Display(Name="Bar")]
EnumValue2
}
Ahora en .NET "normal" Yo sé que soy capaz de obtener los atributos personalizados de un valor de enumeración con enumValue.GetType().GetMember(enumValue.ToString())
.
Desafortunadamente, en WinRT .NET, el método GetMember()
no está disponible en la clase Type.
¿Alguna sugerencia de cómo ir con esto?
============================================== =======
Gracias a Marc a continuación, encontré la respuesta ! El código siguiente funciona para obtener un atributo personalizado específico de un valor de enumeración en .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>();
}
}
Por favor, no prefija los títulos de yur con "WinRT C#:" y tal. Para eso son las etiquetas. –
Eso no es posible. ¡Type.GetMember todavía está presente en .Net 4.5! – logicnp
@logicnp: la API WinRT es un subconjunto de la API .NET completa. –