Duplicar posibles:
Finding an enum value by its Description AttributeGet Enumeración de atributo Descripción
Tengo un método de extensión genérica que recibe el atributo Description
de un Enum
:
enum Animal
{
[Description("")]
NotSet = 0,
[Description("Giant Panda")]
GiantPanda = 1,
[Description("Lesser Spotted Anteater")]
LesserSpottedAnteater = 2
}
public static string GetDescription(this Enum value)
{
FieldInfo field = value.GetType().GetField(value.ToString());
DescriptionAttribute attribute
= Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
as DescriptionAttribute;
return attribute == null ? value.ToString() : attribute.Description;
}
así que puede hacer ...
string myAnimal = Animal.GiantPanda.GetDescription(); // = "Giant Panda"
ahora, estoy tratando de averiguar la función equivalente en la otra dirección, algo así como ...
Animal a = (Animal)Enum.GetValueFromDescription("Giant Panda", typeof(Animal));
Si agrega la palabra clave "this" delante de la cadena ... public static T GetValueFromDescription (esta descripción de cadena) ...se convierte en un método de extensión y puede usar la sintaxis como: var x = "Giant Panda" .GetValueFromDescription (); –
Me gusta este enfoque. Funciona para mí y es elegante y al grano. – beaudetious
¿Cómo se puede encontrar si la descripción no es válida? con: 'var x = EnumEx.GetValueFromDescription (" Dinosaurio ");' Sé que arrojaría una excepción. Pero, ¿qué contendría x? –