c#枚举常用方法/帮助类
public static class EnumHelper
{
/// <summary>
/// 根据枚举的值获取枚举名称
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="status">枚举的值</param>
/// <returns></returns>
public static string GetEnumName<T>(this int status)
{
return Enum.GetName(typeof(T), status);
}
/// <summary>
/// 获取枚举名称集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static string[] GetNamesArr<T>()
{
return Enum.GetNames(typeof(T));
}
/// <summary>
/// 获取字段Description
/// </summary>
/// <param name="fieldInfo">FieldInfo</param>
/// <returns>DescriptionAttribute[] </returns>
private static DescriptionAttribute[] GetDescriptAttr(FieldInfo fieldInfo)
{
if (fieldInfo != null)
{
return (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
}
return null;
}
/// <summary>
/// 从枚举中获取Description
/// </summary>
/// <param name="enumName">需要获取枚举描述的枚举</param>
/// <returns>描述内容</returns>
public static string GetDescription(this Enum enumName)
{
var description = string.Empty;
var fieldInfo = enumName.GetType().GetField(enumName.ToString());
var attributes = GetDescriptAttr(fieldInfo);
if (attributes != null && attributes.Length > 0)
{
description = attributes[0].Description;
}
else
{
description = enumName.ToString();
}
return description;
}
/// <summary>
/// 根据 value 值获取Description
/// </summary>
/// <param name="enumType"></param>
/// <param name="value"></param>
/// <returns></returns>
public static string GetDescription(this Type enumType, int value)
{
var Key = GetNameAndValue(enumType).FirstOrDefault(p => p.Value.Equals(value)).Key;
if (Key.IsEmpty())
return null;
return Key.ToString();
}
/// <summary>
/// 获取枚举所有名称
/// </summary>
/// <param name="enumType">枚举类型typeof(T)</param>
/// <returns>枚举名称列表</returns>
public static List<string> GetEnumNamesList(this Type enumType)
{
return Enum.GetNames(enumType).ToList();
}
/// <summary>
/// 获取所有枚举对应的值
/// </summary>
/// <param name="enumType">枚举类型typeof(T)</param>
/// <returns>枚举值列表</returns>
public static List<int> GetEnumValuesList(this Type enumType)
{
var list = new List<int>();
foreach (var value in Enum.GetValues(enumType))
{
list.Add(Convert.ToInt32(value));
}
return list;
}
/// <summary>
/// 将枚举转换成字典集合
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <returns></returns>
public static Dictionary<string, int> getEnumDic<T>()
{
Dictionary<string, int> resultList = new Dictionary<string, int>();
Type type = typeof(T);
var strList = GetNamesArr<T>().ToList();
foreach (string key in strList)
{
string val = Enum.Format(type, Enum.Parse(type, key), "d");
resultList.Add(key, int.Parse(val));
}
return resultList;
}
/// <summary>
/// 将枚举转换成字典
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <returns></returns>
public static Dictionary<string, int> GetDic<TEnum>()
{
Dictionary<string, int> dic = new Dictionary<string, int>();
Type t = typeof(TEnum);
var arr = Enum.GetValues(t);
foreach (var item in arr)
{
dic.Add(item.ToString(), (int)item);
}
return dic;
}
}