Выбрать значение enum методом рефлексии - C#
Формулировка задачи:
Привет всем!
Стала задача:
В структуре layer есть enum Place
Сейчас я к нему обращаюсь так
Значение layer.Place будет меняться в зависимости от выбранной опции в настройках
Соответственно придется юзать либо if-else либо switch-case. Можно ли как-то обойтись без этих конструкций?
А сделать как-то
Код не рабочий, он отражает лишь основную идею
Пробовал так:
Выдает
При чем не пойму, на кого конкретно он ругается
internal enum Place { XY = 0, XZ = 1, YZ = 2 }
private void mMAP_Click(object sender, EventArgs e) { tLayer.PLO = layer.Place.YZ; p.PlaneVal.ActChoi = true; }
private void mMAP_Click(object sender, EventArgs e) { string s = "YZ"; tLayer.PLO = layer.Place.s; p.PlaneVal.ActChoi = true; }
typeof(layer).GetField("Place").SetValue(tLayer.PLO, "XZ");
Ссылка на объект не указывает на экземпляр объекта.
А, все, решено:
(layer.Place)Enum.Parse(typeof(layer.Place), "XZ");
Решение задачи: «Выбрать значение enum методом рефлексии»
textual
Листинг программы
IDictionary placesDict = new ListDictionary(); placesDict.Add("XY", Place.XY); placesDict.Add("XZ", Place.XZ); placesDict.Add("YZ", Place.YZ); ... где-то в коде var something = (layer.Place)placesDict["XZ"];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д