反向常数

时间:2012-11-22 10:06:44

标签: c# enums constants

有没有办法在C#中实现反向枚举或常量文件?我有一个List的ID,并希望将一个常量字符串映射到此ID。我在考虑这样的事情:

常规enum

public enum StaticUser
{
   DB = 1,
   Order = 2
}

我需要什么:

public enum StaticUser
{
   1 = DB,
   2 = Order
}

2 个答案:

答案 0 :(得分:1)

所以你有一个枚举,

public enum StaticUser
{
    DB = 1,
    Order = 2
}

如果您想获得该会员的姓名,您可以ToString

string staticUserString = ((StaticUser)1).ToString();

这会将文字1转换为StaticUser,然后使用ToString返回枚举类型的字符串表示形式。

此示例后staticUserString == 'DB'true


如果你想要一个特定值的其他常量字符串,那么你需要你自己的转换函数,像这样,

public static string ToSpecialString(this StaticUser source)
{
    const string dBString = "Database"

    switch (source)
    {
        case StaticUser.DB:
            return dBString;

        default:
            return source.ToString();
    }
}

然后你可以做

string specialStaticUserString = ((StaticUser)1).ToSpecialString();

此示例后staticUserString == 'Database'true

答案 1 :(得分:0)

您可以简单地将id转换为枚举:

StaticUser user = (StaticUser)myId;