EnumHelper枚举帮助类——反射取得枚举Description
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EnumHelper枚举帮助类——反射取得枚举Description相关的知识,希望对你有一定的参考价值。
1、需要引用的命名空间:
1 using System.Collections.Generic;//键值对 2 using System.Reflection;//反射 3 System.ComponentModel;//指定属性
2、直接上干货,需要的拿走:
(1)、列举所有枚举值和描述
1 /// <summary> 2 /// 列举所有枚举值和描述 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <returns></returns> 6 public static Dictionary<int, string> GetDescriptionDictionary<T>() where T : struct 7 { 8 Type type = typeof(T); 9 Dictionary<int, string> dictionary = new Dictionary<int, string>(); 10 foreach (int item in System.Enum.GetValues(type)) 11 { 12 string description = string.Empty; 13 try 14 { 15 FieldInfo fieldInfo = type.GetField(System.Enum.GetName(type, item)); 16 if (fieldInfo == null) 17 { 18 continue; 19 } 20 DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)); 21 if (da == null) 22 { 23 continue; 24 } 25 description = da.Description; 26 } 27 catch { } 28 dictionary.Add(item, description); 29 } 30 return dictionary; 31 }
(2)、列举所有枚举值和索引
1 /// <summary> 2 /// 列举所有枚举值和索引 3 /// </summary> 4 /// <param name="typeParam"></param> 5 /// <returns></returns> 6 public static Dictionary<int, string> EnumToFieldDictionary(Type typeParam) 7 { 8 //Type typeParam = typeof(obj); 9 Dictionary<int, string> dictionary = new Dictionary<int, string>(); 10 foreach (int i in System.Enum.GetValues(typeParam)) 11 { 12 string name = System.Enum.GetName(typeParam, i); 13 dictionary.Add(i, name); 14 } 15 return dictionary; 16 }
(3)、获取指定枚举值的描述
1 /// <summary> 2 /// 获取指定枚举值的描述 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 /// <param name="request"></param> 6 /// <returns></returns> 7 public static string GetDescription<T>(T request) where T:struct 8 { 9 try 10 { 11 Type type = request.GetType(); 12 FieldInfo fieldInfo = type.GetField(request.ToString()); 13 14 if (fieldInfo == null) { return string.Empty; } 15 16 DescriptionAttribute da = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)); 17 18 if (da != null) 19 { 20 return da.Description; 21 } 22 else 23 { 24 return string.Empty; 25 } 26 } 27 catch 28 { 29 return string.Empty; 30 } 31 }
(4)、关于扩展
需要的童鞋可以自己写个【获取指定枚举值的描述】的扩展方法,小牛这里没有必要就没写。
【明日小牛】原创——转载请注明出处
以上是关于EnumHelper枚举帮助类——反射取得枚举Description的主要内容,如果未能解决你的问题,请参考以下文章