看了很多資料,不過到最後還是搞不清楚,所以實作看看。
最後建立一個靜態物件,暫時放在專案資料夾最外層。
然後寫了一個測試檔,可以順利讀取到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);
}
}