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

C# 如何从枚举类型的名称和int获取枚举名称,c#,enums,C#,Enums,我可以从应用程序的另一层获取枚举类型的名称和整数值。如何使用此数据获取该枚举值的字符串表示形式 例如,如果我有一个枚举: public enum Cheese { Edam = 1, Cheddar = 3, Brie = 201, RedLeicester = 1001 } 我掌握的数据是 string dataType = "Cheese"; int dataValue = 3; 如何获得结果: "Cheddar" Parse()将是您在这里的朋友 像这

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

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

public enum Cheese
{
    Edam = 1,
    Cheddar = 3,
    Brie = 201,
    RedLeicester = 1001
}
我掌握的数据是

string dataType = "Cheese";
int dataValue = 3;
如何获得结果:

"Cheddar"
Parse()将是您在这里的朋友

像这样:

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

应该做到这一点(未编译,在地铁上)

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

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

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

关于如何在internet上返回/获取枚举名称,有很多示例。。您是否执行了卓有成效的搜索..?我得到的大多数结果都假设您在编译时拥有枚举的类型-在本例中,我不需要使用反射来获取
Cheese
枚举及其值,then@jdweng,所以我想我们应该给每个人一个答案,所有的问题都贴在这里。如果是这样的话,为什么我们中的任何人都应该是程序员/开发人员。。。当我们可以依靠别人为我们做工作的时候???问题是初学者甚至不知道用什么来搜索网页。即使是有经验的人也不总是知道在网上查找信息的关键词。给出一个愚蠢的答案,比如初学者没有代码的post code,然后当他们发布愚蠢的代码时,给他们否定点,这并没有什么效果。这假设您在编译时将Cheese作为一种类型。在我的情况下,“奶酪”是一根绳子。这是我错过的类型的反射,这是行不通的。您只有
Cheese
类型的名称,而不是类型本身。Gah您是对的,我错过了这一点。这假设您在变量数据类型中有该类型的实例。在我的情况下,我只有字符串“Cheese”,所以类型应该是string。获取实际枚举的类型是我缺少的过程的一部分。否,type.GetType从类型名称获取类型。有关更详细的解释,请参见@Evk answer。如果有,您需要将名称空间添加到类型名中。啊,是的-为此需要限定类型名-出于某种原因,我想我误读为使用dataType.GetType()!我的错。
string dataType = "Cheese";
int dataValue = 3;
var enumType = Type.GetType("Namespaces.Of.Your.Enums." + dataType);
var name = Enum.GetName(enumType, dataValue);