using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace WMS.Util { public static class FuncEnum { /// /// 获取枚举名称、值集合 /// /// /// public static Dictionary ToDicByValue(this Type enunType) { Dictionary dicEnums = new Dictionary(); var strList = Enum.GetNames(enunType).ToList(); foreach (string key in strList) { string val = Enum.Format(enunType, Enum.Parse(enunType, key), "d"); dicEnums.Add(int.Parse(val), key); } return dicEnums; } /// /// 获取枚举名称、描述集合 /// /// /// public static Dictionary ToDicByDescription(this Type enunType) { Dictionary dicEnums = new Dictionary(); foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public)) { object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { dicEnums.Add(field.Name, ((DescriptionAttribute)attrs[0]).Description); } } return dicEnums; } /// /// 获取枚举名称、描述集合 /// /// /// public static string ToDicByDescription(this Type enunType,string enumValue) { Dictionary dicEnums = new Dictionary(); var descValue = ""; foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public)) { object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { if (field.Name == enumValue) { descValue = ((DescriptionAttribute) attrs[0]).Description; break; } } } return descValue; } /// /// 获取枚举描述 /// /// /// public static string ToStringByDesc(this Enum enumValue) { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); if (objs.Length == 0) return value; DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0]; return descriptionAttribute.Description; } /// /// 获取枚举名称、值、描述集合 /// /// /// public static List> EnumToTuple(this Type enunType) { List> tuples = new List>(); foreach (FieldInfo field in enunType.GetFields(BindingFlags.Static | BindingFlags.Public)) { object[] attrs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false); string description = string.Empty; if (attrs != null && attrs.Length > 0) description=((DescriptionAttribute)attrs[0]).Description; string val = Enum.Format(enunType, Enum.Parse(enunType, field.Name), "d"); tuples.Add(new Tuple(field.Name,val, description)); } return tuples; } } }