将其他描述信息添加到枚举值

在某些情况下,你可能希望向枚举值添加其他说明,例如,当枚举值本身的可读性低于你可能希望向用户显示的值时。在这种情况下,你可以使用 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());