[電繪]:Rattus rattus-黑鼠

圖片
  In some eras, rats represented the plague and were despised creatures, but in my eyes, humans and rats are no different. -- 在某些時代裡,老鼠代表著瘟疫,是人們唾棄的生物,然而在我眼裡,人與老鼠並無不同。

[Enum]依照Int 值 取得Enum的描述

 需求:

目前我有一個類型為int的變數value,值為1(如圖一);有一個列舉TestEnum(如圖二),那麼該如何利用這麼變數value取的Enum的Description = "測試B"呢?

圖一


圖二

實作:

(一)寫一個"依照Int 值 取得Enum的描述"的擴充方法:

引用:
using System.ComponentModel.DataAnnotations;

  /// <summary>
        /// 依照Int 值 取得Enum的描述
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="obj">列舉物件</param>
        /// <returns></returns>
        public static string GetEnumDescriptionByInt<T>(this object obj)
        {
            int value;

            if (obj == null)
            {
                return string.Empty;
            }

            if (!int.TryParse(obj.ToString(), out value))
            {
                value = 0;
            }

            var e = Enum.Parse(typeof(T), Convert.ToString(value));
            var enumType = ((Enum)e);
            var objName = enumType.ToString();
            var t = enumType.GetType();
            var fi = t.GetField(objName);
            var arrayDescription = (DisplayAttribute[])fi.GetCustomAttributes(typeof(DisplayAttribute), false);
            return arrayDescription == null ? string.Empty : arrayDescription[0].Description;
           
        } 

(二)使用GetEnumDescriptionByInt<T>()取得Enum描述:



static void Main(string[] args)
        {
            int value = 1;

            Console.WriteLine(value.GetEnumDescriptionByInt<TestEnum>());
        }

結果:




留言

這個網誌中的熱門文章

【AutoCAD常見問題】選取物件無藍色高亮顯效果

專題題目該從何開始呢

當兵四個月要帶些什麼? 健保轉出單需要嗎?