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