.NET--------枚举扩展方法(枚举转list,获取枚举描述)

 1         /// <summary>
 2         /// get enum description by name
 3         /// </summary>
 4         /// <typeparam name="T">enum type</typeparam>
 5         /// <param name="enumItemName">the enum name</param>
 6         /// <returns></returns>
 7         public static string GetDescriptionByName<T>(T enumItemName)
 8         {
 9             FieldInfo fi = enumItemName.GetType().GetField(enumItemName.ToString());
10 
11             DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
12                 typeof(DescriptionAttribute), false);
13 
14             if (attributes != null && attributes.Length > 0)
15             {
16                 return attributes[0].Description;
17             }
18             else
19             {
20                 return enumItemName.ToString();
21             }
22         }  
 1         /// <summary>
 2         /// 获取描述
 3         /// </summary>
 4         /// <param name="en"></param>
 5         /// <returns></returns>
 6         public static string GetEnumText(this Enum en)
 7         {
 8             FieldInfo fi = en.GetType().GetField(en.ToString());
 9 
10             DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
11                 typeof(DescriptionAttribute), false);
12 
13             if (attributes != null && attributes.Length > 0)
14             {
15                 return attributes[0].Description;
16             }
17             else
18             {
19                 return en.ToString();
20             }
21         }
 1         /// <summary>
 2         /// 枚举转list
 3         /// </summary>
 4         /// <typeparam name="T"></typeparam>
 5         /// <returns></returns>
 6         public static List<EnumModel> ConvertEnumToList<T>()
 7         {
 8             List<EnumModel> list = new List<EnumModel>();
 9 
10             foreach (var e in Enum.GetValues(typeof(T)))
11             {
12                 EnumModel m = new EnumModel();
13                 m.Value = Convert.ToInt32(e);
14                 m.Description = EnumHelper.GetDescriptionByName((T)e);
15                 list.Add(m);
16             }
17             return list;
18         }
19 
20         public class EnumModel
21         {
22             public int Value { get; set; }
23             public string Description { get; set; }
24         }
 1         /// <summary>
 2         /// 根据枚举值获得枚举描述
 3         /// </summary>
 4         /// <param name="e"></param>
 5         /// <param name="value"></param>
 6         /// <returns></returns>
 7         public static String GetEnumDesc(this Type e, int? value)
 8         {
 9             FieldInfo[] fields = e.GetFields();
10             for (int i = 1, count = fields.Length; i < count; i++)
11             {
12                 if ((int)System.Enum.Parse(e, fields[i].Name) == value)
13                 {
14                     DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])fields[i].
15                 GetCustomAttributes(typeof(DescriptionAttribute), false);
16                     if (EnumAttributes.Length > 0)
17                     {
18                         return EnumAttributes[0].Description;
19                     }
20                 }
21             }
22             return "";
23         }
原文地址:https://www.cnblogs.com/chocolatexll/p/10593920.html