J'ai un enum avec des attributs de description comme ceci :
public enum MyEnum
{
Name1 = 1,
[Description("Here is another")]
HereIsAnother = 2,
[Description("Last one")]
LastOne = 3
}
J'ai trouvé ce bout de code pour récupérer la description basée sur un Enum.
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = fi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (attributes != null && attributes.Any())
{
return attributes.First().Description;
}
return value.ToString();
}
Cela me permet d'écrire du code comme :
var myEnumDescriptions = from MyEnum n in Enum.GetValues(typeof(MyEnum))
select new { ID = (int)n, Name = Enumerations.GetEnumDescription(n) };
Ce que je veux faire, c'est que si je connais la valeur de l'enum (par exemple, 1), comment puis-je récupérer la description ? En d'autres termes, comment puis-je convertir un nombre entier en une "valeur d'énumération" à transmettre à ma méthode GetDescription ?
1 votes
(attributs != null) sera toujours vrai et else est redondant.
3 votes
L'espace de nom requis pour la description est System.ComponentModel
2 votes
Essayez cette solution codereview.stackexchange.com/questions/157871/
0 votes
Veuillez consulter ce lien : stackoverflow.com/a/58954215/5576498
0 votes
Réponse connexe sur un autre poste - Mes enums peuvent-ils avoir des noms amicaux ?