Можно ли создать дерево выражений для динамических операторов if?

У меня есть ситуация, когда я читаю бизнес-логику и заменяю переменные фактическими значениями, а затем мне нужно оценить ее, чтобы получить результат. В настоящее время я использую bcParser для этого, и он отлично работает для всей логики, которая написана в формате Excel.

Кривой мяч, брошенный мне в голову, заключается в том, что условие if не будет похоже на excel if(cond, true, false), а будет похоже на C#, где if (cond) { истинный; } else { false;}, это имеет смысл и упрощает поддержку.Поскольку я заранее заменяю все переменные значением, все, что мне нужно сделать, это оценить его. В настоящее время я решаю эту проблему, экспортируя логику в методы С# и используя отражение, я оцениваю ее, и она также работает.

Мне интересно, есть ли другой вариант, я не хочу писать код для каждого условия if и хотел бы оценивать его во время выполнения. Мне было интересно, смогу ли я создать какой-то анализатор токенов, вызвать оценку собственных выражений С# и выполнить вычисление. Я не углублялся в понимание деревьев выражений, кажется, с таким подходом это возможно. Прежде чем я поеду туда, я хотел бы знать, возможно ли это вообще? Спасибо,

7
задан MPelletier 24 March 2012 в 14:54
поделиться