在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
解析定义的枚举 public enum OrderPaymentStatus { /// <summary> /// 未支付 /// </summary> [Description("未支付")] No=1, /// <summary> /// 已支付 /// </summary> [Description("已支付")] Yes } 解析类 public static class EnumHelper { private static Hashtable enumDesciption = EnumHelper.GetDescriptionContainer(); public static string ToDescription(this Enum value) { if (value == null) { return ""; } Type type = value.GetType(); string name = Enum.GetName(type, value); return EnumHelper.GetDescription(type, name); } public static Dictionary<int, string> ToDescriptionDictionary<TEnum>() { Type typeFromHandle = typeof(TEnum); Array values = Enum.GetValues(typeFromHandle); Dictionary<int, string> dictionary = new Dictionary<int, string>(); foreach (Enum item in values) { dictionary.Add(Convert.ToInt32(item), item.ToDescription()); } return dictionary; } public static Dictionary<int, string> ToDictionary<TEnum>() { Type typeFromHandle = typeof(TEnum); Array values = Enum.GetValues(typeFromHandle); Dictionary<int, string> dictionary = new Dictionary<int, string>(); foreach (Enum item in values) { dictionary.Add(Convert.ToInt32(item), item.ToString()); } return dictionary; } private static bool IsIntType(double d) { return (double)(int)d != d; } private static Hashtable GetDescriptionContainer() { EnumHelper.enumDesciption = new Hashtable(); return EnumHelper.enumDesciption; } private static void AddToEnumDescription(Type enumType) { EnumHelper.enumDesciption.Add(enumType, EnumHelper.GetEnumDic(enumType)); } private static Dictionary<string, string> GetEnumDic(Type enumType) { Dictionary<string, string> dictionary = new Dictionary<string, string>(); FieldInfo[] fields = enumType.GetFields(); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { if (fieldInfo.FieldType.IsEnum) { object[] customAttributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); dictionary.Add(fieldInfo.Name, ((DescriptionAttribute)customAttributes[0]).Description); } } return dictionary; } private static string GetDescription(Type enumType, string enumText) { if (string.IsNullOrEmpty(enumText)) { return null; } if (!EnumHelper.enumDesciption.ContainsKey(enumType)) { EnumHelper.AddToEnumDescription(enumType); } object obj = EnumHelper.enumDesciption[enumType]; if (obj != null && !string.IsNullOrEmpty(enumText)) { Dictionary<string, string> dictionary = (Dictionary<string, string>)obj; return dictionary[enumText].Split('|')[0]; } throw new ApplicationException("不存在枚举的描述"); } }
|
请发表评论