Выбрать значение 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"];