4

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

例如给定:

enum MyEnum { A, B, C };

我有 typeof(MyEnum) 和“B”。

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

4

3 回答 3

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

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

于 2008-10-03T22:21:17.043 回答
3

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

void foo(Type t)
{
   Object o = Enum.Parse(t, "B");
}
于 2008-10-03T22:42:11.887 回答
1

您可以使用泛型来做到这一点。我创建了一个实用程序类来包装它:

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);
于 2012-12-05T22:16:11.430 回答