在不使用反射的情况下获取枚举值的描述

时间:2014-12-14 07:36:29

标签: c# enums

首先,为我的案例使用枚举的原因只是为错误代码开发目录,我一直在使用Description属性来保留实际的错误消息。我可以使用反射获得Description属性的值,但我的问题是:是否有其他方法可以在不使用反射的情况下获取该属性的值?例如,C#中有Enum类型,那么可以使用该类型来获取枚举中的属性值吗?

**我知道使用类开发数据模型是一个更好的举措,枚举是一个古老的习惯,我之所以坚持它的原因是因为我只想知道我是否可以获得这些属性的价值而没有反射。

1 个答案:

答案 0 :(得分:0)

Enum根本不是一个老习惯。它非常有用,但在这里讨论它将是偏离主题的......

如果没有反思,我只能考虑某种映射:

class Program
{
    static void Main(string[] args)
    {
        var crazyValue = CrazyEnum.craZyValue1;
        var resonableValue = crazyValue.ToRreasonableString();
    }
}

enum CrazyEnum
{
    craZyValue1,
    CrazYvalUe2
}

static class CrazyEnumMap
{
    private static Dictionary<CrazyEnum, string> resonableStrings = new Dictionary<CrazyEnum, string>
    {
        { CrazyEnum.craZyValue1, "Hallo world!" },
        { CrazyEnum.CrazYvalUe2, "Hallo enum!" }
    };

    public static string ToRreasonableString(this CrazyEnum value)
    {
        return resonableStrings[value];
    }
}