关于C#:如何从枚举类型的名称和int中获取枚举名称

How can I get an enum name from the name of the enum type and an int

本问题已经有最佳答案,请猛点这里访问。

从应用程序的另一层,我可以得到枚举类型的名称和整数值。如何使用此数据获取该枚举值的字符串表示形式。

例如,如果我有一个枚举:

1
2
3
4
5
6
7
public enum Cheese
{
    Edam = 1,
    Cheddar = 3,
    Brie = 201,
    RedLeicester = 1001
}

我能得到的数据是

1
2
string dataType ="Cheese";
int dataValue = 3;

如何获得结果:

1
"Cheddar"


除了枚举本身的名称之外,还应该知道枚举声明的命名空间和程序集。假设在定义了枚举的程序集中运行下面的代码,并且所有枚举都在编译时知道的同一命名空间中定义,则可以这样做:

1
2
3
4
string dataType ="Cheese";
int dataValue = 3;
var enumType = Type.GetType("Namespaces.Of.Your.Enums." + dataType);
var name = Enum.GetName(enumType, dataValue);

如果枚举位于运行此代码的其他程序集中,则需要提供枚举类型的程序集限定名(再次使用命名空间)。


1
2
Type t = Type.GetType(dataType)
string value = Enum.GetName(t, dataValue)

应该做的技巧(未整理,在地铁上)


enum.parse()将是您的朋友。

像这样:

1
2
int cheeseType = 1;
(Cheese)Enum.Parse(typeof(Cheese), cheeseType.ToString());