將其他描述資訊新增到列舉值
在某些情況下,你可能希望向列舉值新增其他說明,例如,當列舉值本身的可讀性低於你可能希望向使用者顯示的值時。在這種情況下,你可以使用 System.ComponentModel.DescriptionAttribute
類。
例如:
public enum PossibleResults
{
[Description("Success")]
OK = 1,
[Description("File not found")]
FileNotFound = 2,
[Description("Access denied")]
AccessDenied = 3
}
現在,如果要返回特定列舉值的描述,可以執行以下操作:
public static string GetDescriptionAttribute(PossibleResults result)
{
return ((DescriptionAttribute)Attribute.GetCustomAttribute((result.GetType().GetField(result.ToString())), typeof(DescriptionAttribute))).Description;
}
static void Main(string[] args)
{
PossibleResults result = PossibleResults.FileNotFound;
Console.WriteLine(result); // Prints "FileNotFound"
Console.WriteLine(GetDescriptionAttribute(result)); // Prints "File not found"
}
這也可以很容易地轉換為所有列舉的擴充套件方法:
static class EnumExtensions
{
public static string GetDescription(this Enum enumValue)
{
return ((DescriptionAttribute)Attribute.GetCustomAttribute((enumValue.GetType().GetField(enumValue.ToString())), typeof(DescriptionAttribute))).Description;
}
}
然後像這樣容易使用:Console.WriteLine(
result.GetDescription());