ShowProgramCode

2021年5月3日 星期一

C# 如何取得 Enum 的 Description 描述字串

 看了很多資料,不過到最後還是搞不清楚,所以實作看看。

最後建立一個靜態物件,暫時放在專案資料夾最外層。

然後寫了一個測試檔,可以順利讀取到Enum的Description描述字串。

最開始希望能用Enum.Field.GetDescription(),不過沒有成功,如果之後找到其他方法可能會繼續補充。


程式碼:

public static class EnumHelp

    {

        public static string GetDescription(this Enum value)

        {

            Type type = value.GetType();

            string name = Enum.GetName(type, value);

            if (name != null)

            {

                System.Reflection.FieldInfo field = type.GetField(name);

                if (field != null)

                {

                    DescriptionAttribute attr =

                           Attribute.GetCustomAttribute(field,

                             typeof(DescriptionAttribute)) as DescriptionAttribute;

                    if (attr != null)

                    {

                        return attr.Description;

                    }

                }

            }

            return null;

        }

    }

測試碼:

public enum TestEnum

    {

        [Description("Test001")]

        One = 1,


        [Description("Test002")]

        Two = 2,


        [Description("Test003")]

        Three = 3

    }


    [TestClass]

    public class DemoTest

    {

        [TestMethod]

        public void EmunHelpTest()

        {

            string enumOneDescriptionChk = "Test001";

            string enumTwoDescriptionChk = "Test002";

            string enumThreeDescriptionChke = "Test003";


            string enumOneDescription = EnumHelp.GetDescription(TestEnum.One);

            Assert.AreEqual(enumOneDescription, enumOneDescriptionChk);


            string enumTwoDescription = EnumHelp.GetDescription(TestEnum.Two);

            Assert.AreEqual(enumTwoDescription, enumTwoDescriptionChk);


            string enumThreeDescription = EnumHelp.GetDescription(TestEnum.Three);

            Assert.AreEqual(enumThreeDescription, enumThreeDescriptionChke);

        }

    }

沒有留言:

張貼留言