myahyagunes
3/4/2020 - 10:54 AM

Enum Extension to Get Enum Description

/// <summary>
/// Enum Extension to Get Enum Description
/// </summary>
/// <typeparam name="T">Enum</typeparam>
/// <param name="e">Enum</param>
/// <returns></returns>
public static string GetDescription<T>(this T e) where T : IConvertible
{
    if (e is Enum)
    {
        Type type = e.GetType();
        Array values = System.Enum.GetValues(type);

        foreach (int val in values)
        {
            if (val == e.ToInt32(CultureInfo.InvariantCulture))
            {
                var memInfo = type.GetMember(type.GetEnumName(val));
                var descriptionAttribute = memInfo[0]
                    .GetCustomAttributes(typeof(DescriptionAttribute), false)
                    .FirstOrDefault() as DescriptionAttribute;

                if (descriptionAttribute != null)
                {
                    return descriptionAttribute.Description;
                }
            }
        }
    }

    return null; // could also return string.Empty
}
public enum MessageStatus
{
  [Description("New Description")]
  New
}
string text = ((MessageStatus)message.Status).GetDescription<MessageStatus>()