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

时间:2008-10-03 22:20:04

标签: c# enums

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

E.g。鉴于:

enum MyEnum { A, B, C };

我有typeof(MyEnum)和“B”。

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

3 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

您可以使用泛型来完成此操作。我创建了一个Utility类来包装它:

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);