[C#] 取得列舉 描述 (Get Enum Description)

 實作:

*需求:

(1)需要取得列舉的描述

(2)依相對應的列舉,將Int 轉換為列舉的描述

1.列舉內容

 public enum TestEnum
    {
        [Display(Name = "A", Description = "A")]
        A,
        [Display(Name = "B", Description = "B")]
        B
    }

2.建立一個 Enum-Helper

  /// <summary>
    /// Enum-Helper
    /// </summary>
    public static class EnumHelper
    {
        /// <summary>
        /// 取得列舉描述
        /// </summary>
        /// <param name="obj">列舉物件</param>
        /// <returns></returns>
        public static string GetDescription(this Enum obj)
        {
            var objName = obj.ToString();

            var t = obj.GetType();

            var fi = t.GetField(objName);

            var arrayDescription = (DisplayAttribute[])fi.GetCustomAttributes(typeof(DisplayAttribute), false);

            return arrayDescription == null ? string.Empty : arrayDescription[0].Description;
        }

        /// <summary>
        /// 取得列舉描述
        /// </summary>
        /// <typeparam name="T">列舉類型</typeparam>
        /// <param name="obj">列舉數字</param>
        /// <returns></returns>
        public static string GetDescription<T>(this object obj)
        {
            if (obj == null)
            {
                return string.Empty;
            }
            if (!int.TryParse(obj.ToString(), out int value))
            {
                value = 0;
            }
            var e = Enum.Parse(typeof(T), Convert.ToString(value));
            return ((Enum)e).GetDescription();
        }
    }

3.測試與結果



留言

這個網誌中的熱門文章

[Visual Studio]位於網際網路或是限制區域上 或是檔案上標有 web 字樣 所以無法處理該檔案。若希望處理這些檔案 請移除 web 字樣。

[IIS] IIS執行時,發生拒絕存取路徑 問題

[windows] xcopy 備份至 「網路磁碟機」