ENUM替代显示值

时间:2014-11-18 17:04:07

标签: c# enums

根据我的经验,Enums类型非常适合于一些名称列表,这些名称对应于使代码对开发人员更具可读性的值。

我经常抵制向用户写出ENUM名称的诱惑。例如

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
console.writeline(Days.Sat.ToString());

我知道Enums并不打算向用户显示。我的问题是什么是下一个最好的选择,我知道我可以使用值的字典,或类/结构等。枚举非常简单,我想知道下一个简单的替代方法,向用户显示值?

1 个答案:

答案 0 :(得分:2)

如评论中所述,您可以使用'说明'属性:

private enum Days
{
    [Description("Saturday")]
    Sat,
    [Description("Sunday")]
    Sun,
    [Description("Monday")]
    Mon,
    [Description("Tuesday")]
    Tue,
    [Description("Wednesday")]
    Wed,
    [Description("Thursday")]
    Thu,
    [Description("It's Friday, Friday, gotta get down on Friday")]
    Fri
};

public static string DescribeEnum(Enum value)
{
    var field = value.GetType().GetField(value.ToString());
    var descriptionAttribute = (DescriptionAttribute)Attribute.GetCustomAttribute(
        field, typeof(DescriptionAttribute));

    return (descriptionAttribute == null)
               ? value.ToString()
               : descriptionAttribute.Description;
}

private static void Main()
{
    Console.WriteLine(DescribeEnum(Days.Fri));
    // Output:
    // It's Friday, Friday, gotta get down on Friday
}