Affichage des énumérations avec des chaînes lisibles par l'homme en C#
Les énumérations sont utiles pour représenter des constantes nommées, mais l'affichage direct de leurs valeurs manque souvent de clarté pour les utilisateurs. Ce guide montre comment mapper des valeurs d'énumération à des chaînes conviviales sans la conversion inverse de chaîne en valeur.
La solution exploite l'attribut Description
de System.ComponentModel
. En appliquant cet attribut aux membres de votre énumération, vous fournissez une étiquette plus descriptive pour chaque valeur.
Exemple :
<code class="language-csharp">private enum PublishStatusValue { [Description("Not Completed")] NotCompleted, Completed, Error }</code>
Récupération de chaînes conviviales :
La méthode d'extension suivante récupère la description ou la représentation sous forme de chaîne par défaut de l'énumération si aucune description n'est trouvée :
<code class="language-csharp">public static string GetDescription<T>(this T enumerationValue) where T : struct { Type type = enumerationValue.GetType(); if (!type.IsEnum) { throw new ArgumentException("EnumerationValue must be of Enum type", "enumerationValue"); } MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); if (memberInfo != null && memberInfo.Length > 0) { object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return ((DescriptionAttribute)attrs[0]).Description; } } return enumerationValue.ToString(); }</code>
Cette méthode fournit efficacement une sortie conviviale, améliorant la lisibilité du code et l'expérience utilisateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!