国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C# 給枚舉定義DescriptionAttribute,把枚舉轉換為鍵值對

2019-11-17 02:55:21
字體:
來源:轉載
供稿:網友

C# 給枚舉定義DescriptionAttribute,把枚舉轉換為鍵值對

在C#中,枚舉用來定狀態(tài)值很方便,例如我定義一個叫做Season的枚舉

public enum Season    {        SPRing = 1,        Summer = 2,        Autumn = 3,        Winter = 4    }

枚舉名是不能出現(xiàn)空格,()-/等字符

我們想把Spring顯示為春天,我們要自己定義說明信息,我們可以使用DescriptionAttribute,如下

public enum Season    {        [Description("春 天")]        Spring = 1,        [Description("夏 天")]        Summer = 2,        //[Description("秋 天")]        Autumn = 3,        [Description("冬 天")]        Winter = 4    }

下面我們來寫個擴展方法,來得到枚舉的說明信息,如下

        /// <summary>        /// 擴展方法,獲得枚舉的Description        /// </summary>        /// <param name="value">枚舉值</param>        /// <param name="nameInstead">當枚舉值沒有定義DescriptionAttribute,是否使用枚舉名代替,默認是使用</param>        /// <returns>枚舉的Description</returns>        public static string GetDescription(this Enum value, Boolean nameInstead = true)        {            Type type = value.GetType();            string name = Enum.GetName(type, value);            if (name == null)            {                return null;            }            FieldInfo field = type.GetField(name);            DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;            if (attribute == null&&nameInstead == true)            {                return name;            }            return attribute == null ? null : attribute.Description;        }

把枚舉轉換為鍵值對集合

/// <summary>        /// 把枚舉轉換為鍵值對集合        /// </summary>        /// <param name="enumType">枚舉類型</param>        /// <param name="getText">以Enum為參數(shù)類型,String為返回類型的委托</param>        /// <returns>以枚舉值為key,枚舉文本為value的鍵值對集合</returns>        public static Dictionary<Int32, String> EnumToDictionary(Type enumType, Func<Enum, String> getText)        {            if (!enumType.IsEnum)            {                throw new ArgumentException("傳入的參數(shù)必須是枚舉類型!", "enumType");            }            Dictionary<Int32, String> enumDic = new Dictionary<int, string>();            Array enumValues = Enum.GetValues(enumType);            foreach (Enum enumValue in enumValues)            {                Int32 key = Convert.ToInt32(enumValue);                String value = getText(enumValue);                enumDic.Add(key, value);            }            return enumDic;        }

我們把上面兩個方法放入名為EnumUtil的靜態(tài)類中。

下面是使用方法

public enum Season    {        [Description("春 天")]        Spring = 1,        [Description("夏 天")]        Summer = 2,        //[Description("秋 天")]        Autumn = 3,        [Description("冬 天")]        Winter = 4    }    class Program    {        static void Main(string[] args)        {            Season spring = Season.Spring;            //打印枚舉名            Console.WriteLine(spring.ToString());            //打印枚舉說明            Console.WriteLine(spring.GetDescription());            //枚舉轉換為鍵值對集合            Dictionary<Int32, String> dic = EnumUtil.EnumToDictionary(typeof(Season), e => e.GetDescription());            PrintDic(dic);            dic = EnumUtil.EnumToDictionary(typeof(Season), e => e.GetDescription(false));            PrintDic(dic);            dic = EnumUtil.EnumToDictionary(typeof(Season), e => e.ToString());            PrintDic(dic);            dic = EnumUtil.EnumToDictionary(typeof(Season), e => Enum.GetName(typeof(Season), e));            PrintDic(dic);            Console.ReadLine();        }        private static void PrintDic(Dictionary<Int32, String> dic)        {            foreach (KeyValuePair<Int32,String> item in dic)            {                Console.WriteLine("Key:{0}-----Value:{1}", item.Key, item.Value);            }        }    }

輸出結果如下

Spring春 天Key:1-----Value:春 天Key:2-----Value:夏 天Key:3-----Value:AutumnKey:4-----Value:冬 天Key:1-----Value:春 天Key:2-----Value:夏 天Key:3-----Value:Key:4-----Value:冬 天Key:1-----Value:SpringKey:2-----Value:SummerKey:3-----Value:AutumnKey:4-----Value:WinterKey:1-----Value:SpringKey:2-----Value:SummerKey:3-----Value:AutumnKey:4-----Value:Winter

源代碼:http://files.VEVb.com/jm6041/EnumUtil.rar


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏尼特右旗| 黑龙江省| 卫辉市| 民县| 抚顺市| 界首市| 鄄城县| 津市市| 苍南县| 巴塘县| 垣曲县| 临夏市| 辉南县| 红安县| 盐源县| 乐都县| 彩票| 曲麻莱县| 温泉县| 潼南县| 兴山县| 木兰县| 墨玉县| 太保市| 华容县| 北流市| 黑龙江省| 贵阳市| 轮台县| 嘉峪关市| 平陆县| 海阳市| 东乡县| 仁化县| 穆棱市| 沁阳市| 西吉县| 漳州市| 普安县| 九台市| 恩施市|