我正在试图弄清楚如何将所有部分组合在一起,并希望从一个简单的案例开始的具体源代码示例.
考虑以下C#代码:
Func<int, int, int> f = (x, y) => x + y;
Run Code Online (Sandbox Code Playgroud)
我可以使用表达式树在运行时生成等效函数,如下所示:
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();
Run Code Online (Sandbox Code Playgroud)
现在给出以下lambda:
Func<dynamic, dynamic, dynamic> f = (x, y) => x + y;
Run Code Online (Sandbox Code Playgroud)
如何使用表达式树(并且,大概Expression.Dynamic)生成等效的?