Я пытаюсь выяснить, как собрать все части вместе, и был бы признателен за конкретный пример исходного кода для простого случая, с которого можно начать.
Рассмотрим следующий код C #:
Func<int, int, int> f = (x, y) => x + y;
Я могу создать эквивалентную функцию во время выполнения, используя деревья выражений следующим образом:
var x = Expression.Parameter(typeof(int), "x");
var y = Expression.Parameter(typeof(int), "y");
Func<int, int, int> f =
Expression.Lambda<Func<int, int, int>>(
Expression.Add(x, y),
new[] { x, y }
).Compile();
Теперь, учитывая следующую лямбду:
Func<dynamic, dynamic, dynamic> f = (x, y) => x + y;
, как бы я сгенерировал эквивалент, используядеревья выражений (и, предположительно, Expression.Dynamic
)?