Enums descritivos em C #

Adicione facilmente texto descritivo a enums em C #:

using System;
using System.ComponentModel;

public enum Genre
{
[Description("Acid Jazz")]
AcidJazz,

Metal,

[Description("R&B and Soul")]
RAndBAndSoul
}

Você pode acessar as descrições com um método de extensão:

using System;
using System.Linq;
using System.Reflection;

public static class Extensions
{
public static string Description(this Enum value)
{
if (value == null)
{
throw new ArgumentNullException("value", "value cannot be null.");
}

string text = value.ToString();
string result = text;
Type type = value.GetType();
MemberInfo info = type.GetMember(text).FirstOrDefault();

if (info != null)
{
DescriptionAttribute da = info.GetCustomAttributes(
typeof(DescriptionAttribute),
false).FirstOrDefault() as DescriptionAttribute;

if (da != null)
{
result
= da.Description;
}
}

return result;
}
}