123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Threading.Tasks;
- namespace SmartCoalApplication.Annotation.Enum
- {
- /// <summary>
- /// 枚举帮助类
- /// </summary>
- public class EnumHelper
- {
- /// <summary>
- /// 获取枚举项描述信息 例如GetEnumDesc(Days.Sunday)
- /// </summary>
- /// <param name="en">枚举项 如Days.Sunday</param>
- /// <returns></returns>
- public static string GetEnumDesc(System.Enum en)
- {
- Type type = en.GetType();
- MemberInfo[] memInfo = type.GetMember(en.ToString());
- if (memInfo != null && memInfo.Length > 0)
- {
- object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
- if (attrs != null && attrs.Length > 0)
- return ((DescriptionAttribute)attrs[0]).Description;
- }
- return en.ToString();
- }
- ///<summary>
- /// 获取枚举项+描述
- ///</summary>
- ///<param name="enumType">Type,该参数的格式为typeof(需要读的枚举类型)</param>
- ///<returns>键值对</returns>
- public static Dictionary<string, string> GetEnumItemDesc(Type enumType)
- {
- Dictionary<string, string> dic = new Dictionary<string, string>();
- FieldInfo[] fieldinfos = enumType.GetFields();
- foreach (FieldInfo field in fieldinfos)
- {
- if (field.FieldType.IsEnum)
- {
- Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
- dic.Add(field.Name, ((DescriptionAttribute)objs[0]).Description);
- }
- }
- return dic;
- }
- ///<summary>
- /// 获取枚举值+描述
- ///</summary>
- ///<param name="enumType">Type,该参数的格式为typeof(需要读的枚举类型)</param>
- ///<returns>键值对</returns>
- public static Dictionary<string, string> GetEnumItemValueDesc(Type enumType)
- {
- Dictionary<string, string> dic = new Dictionary<string, string>();
- Type typeDescription = typeof(DescriptionAttribute);
- FieldInfo[] fields = enumType.GetFields();
- string strText = string.Empty;
- string strValue = string.Empty;
- foreach (FieldInfo field in fields)
- {
- if (field.FieldType.IsEnum)
- {
- strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();
- object[] arr = field.GetCustomAttributes(typeDescription, true);
- if (arr.Length > 0)
- {
- DescriptionAttribute aa = (DescriptionAttribute)arr[0];
- strText = aa.Description;
- }
- else
- {
- strText = field.Name;
- }
- dic.Add(strValue, strText);
- }
- }
- return dic;
- }
- }
- }
|