Neuster Artikel...
C# : Enum mit alternativer Bezeichnung ausgeben
Enumerationen erleichtern die Zustandsgebung erheblich. Leider sind Enumerationen bei der Ausgabe nicht sehr flexibel. Zwar können die Felder der Enumeration als String ausgegeben werden, sind dadurch aber an ihren Variablenname gebunden. Abhilfe für diese Einschränkung ermöglicht die [Description]-Flag, die einen beschreibenden String erwartet. Diese kann über einen kleinen Workaround auch während der Laufzeit ausgegeben werden. Da es keine ToString-Methode gibt, die man innerhalb der Enum überschreiben kann, muss die Ausgabe in eine separate Methode ausgelagert werden, wie das nachfolgende Listing zeigt:
public enum EnumValue
{
// Description-Flags im Entwurf setzen
[Description("1st value")] FirstValue,
[Description("2nd value")] SecondValue,
[Description("3rd value")] ThirdValue,
};
public static string GetEnumDescription(object value)
{
if (value == null)
throw new NullReferenceException();
Type type = value.GetType();
string name = Enum.GetName(type, value);
FieldInfo fieldInfo = type.GetField(name);
object[] attributeArray = fieldInfo.GetCustomAttributes(
typeof(DescriptionAttribute), false);
if (attributeArray.Length > 0)
{
DescriptionAttribute attribute = (attributeArray[0] as DescriptionAttribute);
if (attribute != null)
return attribute.Description;
}
return value.ToString();
}