динамический язык исполнения (DLR) имеет довольно классный код для выражения, в том числе очень хороший код для печати деревьев выражений, которые я хочу для использования, чтобы:
int a = 1;
int b = 2;
Expression<Func<int, int>> expression = (c) => a + (b * c)
expression.Evaluate(5, stringBuilder)
Выходы:
(5) => a + (b * c) = 11 Where
a = 1
b * c = 10 Where
b = 2
c = 5
Я нашел некоторый код в сети, чтобы сделать это, но обнаружил, что он работает только, если выражение не принимает аргументов.
Затем я обнаружил DLR-реализацию аналогичного метода. Однако DLR имеет свои собственные пользовательские реализации класса Expression и многие другие стандартные типы С#, поэтому я немного запутался. Кто-нибудь знает, как я могу реализовать вышеперечисленное?