Как создать объект перечисления из его типа и имени значения? - PullRequest
3 голосов
/ 04 октября 2008

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

например. учитывая:

enum MyEnum { A, B, C };

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

Как мне создать объект MyEnum, установленный в MyEnum.B?

Ответы [ 3 ]

16 голосов
/ 04 октября 2008
MyEnum enumValue = (MyEnum)Enum.Parse(typeof(MyEnum), "B");

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

2 голосов
/ 04 октября 2008

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

void foo(Type t)
{
   Object o = Enum.Parse(t, "B");
}
1 голос
/ 06 декабря 2012

Вы можете сделать это с помощью дженериков. Я создал класс 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...