如何从枚举类型的名称和int中获取枚举名称

时间:2017-10-24 14:57:05

标签: c# enums

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

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

public enum Cheese
{
    Edam = 1,
    Cheddar = 3,
    Brie = 201,
    RedLeicester = 1001
}

我可以获得的数据是

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

我如何得到结果:

"Cheddar"

3 个答案:

答案 0 :(得分:5)

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

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)

应该做的伎俩(未编译,在地铁上)

答案 2 :(得分:0)

enum.Parse()将是你的朋友。

像这样:

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