Выбрать значение 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"];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д