c#枚举 获取枚举键值对、描述等
2016-12-29 00:00
465 查看
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Dictionary<string, string> dic1 = GetEnumItemDesc(typeof(Days)); foreach (string key in dic1.Keys) { Console.WriteLine(key + ":{0}", dic1[key]); } Dictionary<string, string> dic = GetEnumItemValueDesc(typeof(Days)); foreach (string key in dic.Keys) { Console.WriteLine(key + ":{0}", dic[key]); } Console.WriteLine(string.Format(Days.Sunday.ToString() + ":{0}", GetEnumDesc(Days.Sunday))); Console.WriteLine(string.Format("{0}", (int)Enum.Parse(typeof(Days), "Thursday", true))); Console.ReadKey(); } /// <summary> /// 获取枚举项描述信息 例如GetEnumDesc(Days.Sunday) /// </summary> /// <param name="en">枚举项 如Days.Sunday</param> /// <returns></returns> public static string GetEnumDesc(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; } } public enum Days { [Description("星期天")] Sunday, [Description("星期一")] Monday, [Description("星期二")] Tuesday, [Description("星期三")] Wednesday, [Description("星期四")] Thursday, [Description("星期五")] Friday, [Description("星期六")] Saturday } }
相关文章推荐
- c#枚举 获取枚举键值对、描述等
- C# 枚举转键值对,获取描述等通用方法
- c#枚举 获取枚举键值对、描述等
- C#获取枚举描述代码
- C# 获取枚举的描述值
- C#获取枚举的Description描述信息
- C#获取枚举的描述
- C# 获取枚举类型中所有描述信息
- C#枚举描述获取
- C#获取枚举描述
- C#实现获取枚举的描述
- C# 获取枚举类型中所有描述信息
- C#工具类(包含获取枚举描述方法)
- C#获取枚举描述代码
- C# 获取Enum枚举内容值或描述
- C# 获取枚举的 键名称,值 和描述 遍历枚举
- C# 获取枚举 Enum 变量值的 Description 属性
- .NET(C#):使用反射来获取枚举的名称、值和特性【转】
- C# 通过反射获取MVC Controller里的类名,方法名,参数列表,返回值类型,Description描述,自定义Attribute
- C# 获取枚举的值