【发布时间】:2008-10-03 22:20:04
【问题描述】:
我有一个枚举类型 (System.Type) 和一个包含要设置的枚举值的字符串。
例如给定:
enum MyEnum { A, B, C };
我有 typeof(MyEnum) 和 "B"。
如何创建设置为 MyEnum.B 的 MyEnum 对象?
【问题讨论】:
我有一个枚举类型 (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");
}
【讨论】:
您可以使用泛型来做到这一点。我创建了一个实用程序类来包装它:
public static class Utils {
public static T ParseEnum<T>(string value) {
return (T)Enum.Parse(typeof(T), value, true);
}
然后像这样调用:
string s = "B";
MyEnum enumValue = Utils.ParseEnum<MyEnum>(s);
【讨论】: