搜尋此網誌

2023年5月30日 星期二

C# 為 Enum 加入 DescriptionAttribute

緣起:


    看專案的程式碼時,看到同事有為他自訂的列舉設定 DescriptionAttribute,還有寫個 Method 可以取得此列舉 DescriptionAttribute 的 Description,覺得這東西看起來很實用,所以就想抄起來。



程式碼:


    直接放程式碼,反正我只是要知道可以怎麼寫就好,而且我功力不足,不知道怎麼講解 XD。要注意的就,需要引入 System.ComponentModel 跟 System.Reflection

using System;
using System.ComponentModel;
using System.Reflection;

namespace Test
{
    public enum TestEnum
    {
        [Description("狗")]
        dog=1,
        [Description("貓")]
        cat=2,
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetDescription(TestEnum.dog)); //狗
            Console.WriteLine(GetDescription(TestEnum.cat)); //貓
            Console.ReadKey();
        }

        public static string GetDescription(Enum value)
        {
            FieldInfo fi = value.GetType().GetField(value.ToString());
            DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            return attributes.Length > 0 ? attributes[0].Description : value.ToString();
        }
    }
}



沒有留言:

張貼留言