Enum HasDescription
Multiple ways to check if an enum has description
Source
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);
}
}
Example
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
}