Я пытаюсь понять, как собрать все части, и хотел бы оценить конкретный пример исходного кода для простого случая, чтобы начать с.
Рассмотрим следующий код С#:
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
)?