public class DescriptionAttribute : System.Attribute
public string Description
public DescriptionAttribute(string icon)
public class AwesomeIconAttribute : DescriptionAttribute
public AwesomeIconAttribute(string icon): base (icon)
[Description("../../images/dot-red.png")]
[AwesomeIcon("<i class='fa fa-lg fa-circle v4-red'></i>")]
[Description("../../images/dot-yellow.png")]
[AwesomeIcon("<i class='fa fa-lg fa-circle v4-yellow'></i>")]
[Description("../../images/dot-green.png")]
[AwesomeIcon("<i class='fa fa-lg fa-circle v4-green'></i>")]
[Description("../../images/dot-gold.png")]
[AwesomeIcon("<i class='fa fa-lg fa-circle v4-gold'></i>")]
[Description("../../images/dot-grey.png")]
[AwesomeIcon("<i class='fa fa-lg fa-circle v4-grey'></i>")]
public static string GetEnumDescription(Enum value)
var fi = value.GetType().GetField(value.ToString());
var attributes = fi.GetCustomAttributes(typeof (DescriptionAttribute), false);
var theDescriptionAttribute = attributes.FirstOrDefault(x => x.GetType() == typeof (DescriptionAttribute)) as DescriptionAttribute;
if (theDescriptionAttribute == null)
return theDescriptionAttribute.Description;
public static string GetEnumDescription<T>(Enum value)where T : DescriptionAttribute
var fi = value.GetType().GetField(value.ToString());
var attributes = fi.GetCustomAttributes(typeof (T), false);
var theDescriptionAttribute = attributes.FirstOrDefault(x => x.GetType() == typeof (T)) as T;
if (theDescriptionAttribute == null)
return theDescriptionAttribute.Description;
public static void Main()
Console.WriteLine(GetEnumDescription(TrafficLight.Red));
Console.WriteLine(GetEnumDescription(TrafficLight.Yellow));
Console.WriteLine(GetEnumDescription(TrafficLight.Green));
Console.WriteLine(GetEnumDescription<AwesomeIconAttribute>(TrafficLight.Green));
Console.WriteLine(GetEnumDescription<DescriptionAttribute>(TrafficLight.Green));