Enum枚举类使用集合

1、使用扩展方法使用枚举值对于的Description属性值

public static class EnumExtenstion
{
public static string GetDescriptionName(this Enum enumValue)
{
object[] attr = enumValue.GetType().GetField(enumValue.ToString())
.GetCustomAttributes(typeof(DescriptionAttribute), false);

if (attr.Length > 0)
return ((DescriptionAttribute)attr[0]).Description;

return "";
}
}

2、获取枚举Description属性值和枚举值的对于关系

/// <summary>
/// 获取枚举类型描述属性和枚举值的关系集合(如果没有描述信息或描述信息为空,则不建立关系)
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Dictionary<string, int> GetEnumDescriptionAndValue<T>()
{
var dicFeatureStatusNameId = new Dictionary<string, int>();
FieldInfo[] fiArray = typeof(T).GetFields();
foreach (FieldInfo item in fiArray)
{
object[] attrs = item.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs.Length > 0) //有Description属性
{
string descriptionName = ((DescriptionAttribute)attrs[0]).Description; //枚举描述值
if (!string.IsNullOrWhiteSpace(descriptionName)
&& !dicFeatureStatusNameId.ContainsKey(descriptionName))
{
int value = item.GetValue(typeof(T)).GetHashCode(); //枚举值
dicFeatureStatusNameId.Add(descriptionName, value);
}
}
}

return dicFeatureStatusNameId;
}
原文地址:https://www.cnblogs.com/gossip/p/4174941.html