У меня есть тип (System.Type) перечисления и строка, содержащая значение перечисления для установки.
Например. дано:
enum MyEnum { A, B, C };
У меня есть typeof(MyEnum) и "B".
Как создать объект MyEnum со значением MyEnum.B?
У меня есть тип (System.Type) перечисления и строка, содержащая значение перечисления для установки.
Например. дано:
enum MyEnum { A, B, C };
У меня есть typeof(MyEnum) и "B".
Как создать объект MyEnum со значением MyEnum.B?
MyEnum enumValue = (MyEnum)Enum.Parse(typeof(MyEnum), "B");
У вас также есть перегрузка без учета регистра.
Я предполагаю, что у вас нет доступа к MyEnum, только к typeof(MyEnum):
void foo(Type t)
{
Object o = Enum.Parse(t, "B");
}
Вы можете сделать это с помощью дженериков. Я создал класс 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);