如何从值的类型和名称创建枚举对象?

我有一个枚举的类型(System.Type)和一个包含要设置的枚举值的字符串。

例如给出:

enum MyEnum { A, B, C }; 

我有typeof(MyEnum)和“B”。

如何创建设置为MyEnum.B的MyEnum对象?

 MyEnum enumValue = (MyEnum)Enum.Parse(typeof(MyEnum), "B"); 

您还有一个不区分大小写的重载。

我假设您无法访问MyEnum,只能访问typeof(MyEnum):

 void foo(Type t) { Object o = Enum.Parse(t, "B"); } 

你可以用generics来做到这一点。 我创建了一个Utility类来包装它:

 public static class Utils { public static T ParseEnum(string value) { return (T)Enum.Parse(typeof(T), value, true); } 

然后调用如:

 string s = "B"; MyEnum enumValue = Utils.ParseEnum(s);