close

無意間看到有人發問個問題,剛好是小章大文章

參考網址連結

這個真的很實用,趕快學起來變成自己的東西

先建立一個類別,繼承Attribute

  private class DescriptionAttribute : Attribute
        {
            public string Description { get; set; }

            public DescriptionAttribute(string Description)
            {
                this.Description = Description;
            }

            public override string ToString()
            {
                return this.Description.ToString();
            }
        }


    public enum DirectionEnum
        {
            [Description("1.上")]
            上 = 1,

            [Description("2.下")]
            下 = 2,

            [Description("3.左")]
            左 = 3,

            [Description("4.右")]
            右 = 4
        }


取得Description

     public static string GetDescription(object T)
        {
            var type = T.GetType();
            var members = type.GetMember(T.ToString());
            var attributes = members[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
            var description = ((DescriptionAttribute)attributes[0]).Description;
            return description;
        }


 private static void Main(string[] args)
        {
            DirectionEnum enum1 = DirectionEnum.左;

            Console.WriteLine(enum1);
            Console.WriteLine((int)enum1);
            Console.WriteLine(GetDescription(enum1));

            Console.ReadLine();
        }


回傳結果


3
3.左


也可以跑一個迴圈看看

  foreach (var item in Enum.GetValues(typeof(DirectionEnum)))
                Console.WriteLine(GetDescription(item));
 

arrow
arrow
    文章標籤
    C# Attribute Reflection Enum
    全站熱搜

    軒軒的爸媽 發表在 痞客邦 留言(0) 人氣()