Afin d'obtenir des descriptions plus "lisibles par l'homme" pour les énumérations (par exemple "Très élevé" plutôt que "Très élevé" dans votre exemple), j'ai décoré les valeurs d'énumération avec l'attribut suivant :
public enum MeasurementType
{
Each,
[DisplayText("Lineal Metres")]
LinealMetre,
[DisplayText("Square Metres")]
SquareMetre,
[DisplayText("Cubic Metres")]
CubicMetre,
[DisplayText("Per 1000")]
Per1000,
Other
}
public class DisplayText : Attribute
{
public DisplayText(string Text)
{
this.text = Text;
}
private string text;
public string Text
{
get { return text; }
set { text = value; }
}
}
Ensuite, vous avez utilisé une méthode d'extension comme celle-ci :
public static string ToDescription(this Enum en)
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(
typeof(DisplayText),
false);
if (attrs != null && attrs.Length > 0)
return ((DisplayText)attrs[0]).Text;
}
return en.ToString();
}
Vous pouvez alors simplement appeler
myEnum.ToDescription()
afin d'afficher votre énumération comme texte plus lisible.