需求:
目前我有一個類型為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>());
        }
結果:
 
留言
張貼留言