Как создать объект enum из его типа и имени значения?

У меня есть тип (System.Type) перечисления и строка, содержащая значение перечисления для установки.

Например. дано:

enum MyEnum { A, B, C };

У меня есть typeof(MyEnum) и "B".

Как создать объект MyEnum со значением MyEnum.B?


person Community    schedule 03.10.2008    source источник


Ответы (3)


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

У вас также есть перегрузка без учета регистра.

person Yuval    schedule 03.10.2008

Я предполагаю, что у вас нет доступа к MyEnum, только к typeof(MyEnum):

void foo(Type t)
{
   Object o = Enum.Parse(t, "B");
}
person Pavel Chuchuva    schedule 03.10.2008

Вы можете сделать это с помощью дженериков. Я создал класс 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);
person Brad Patton    schedule 05.12.2012