Sharing these Enum extension methods I wrote yesterday.
using System; using System.ComponentModel; namespace Nitin.Spike.EnumExtensions { class Program { static void Main() { const Colors someColor = Colors.Red; string description = someColor.Description(); if (someColor.HasDescription()) { if (someColor.HasDescription("indicates stop", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("Works"); } } } } public enum Colors { [Description("Indicates Stop")] Red, [Description("Indicates Nothing")] Blue, [Description("Indicates Go")] Green } public static class EnumExtensions { public static string Description(this Enum someEnum) { var memInfo = someEnum.GetType().GetMember(someEnum.ToString()); if (memInfo != null && memInfo.Length > 0) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false); if (attrs != null && attrs.Length > 0) return ((DescriptionAttribute)attrs[0]).Description; } return someEnum.ToString(); } public static bool HasDescription(this Enum someEnum) { return !string.IsNullOrWhiteSpace(someEnum.Description()); } public static bool HasDescription(this Enum someEnum, string expectedDescription) { return someEnum.Description().Equals(expectedDescription); } public static bool HasDescription(this Enum someEnum, string expectedDescription, StringComparison comparisionType) { return someEnum.Description().Equals(expectedDescription, comparisionType); } } }