【发布时间】:2011-09-04 10:09:52
【问题描述】:
.NET 表达式类型支持表示调用由另一个表达式定义的函数,但是有没有一种方法可以使用 C# lambda 表达式语法来表达这一点?我可以生成一个表达式,编译它并在另一个表达式中调用它,但这会失去被调用的 lambda 的“表达式”,并且调用表达式将只包含对匿名编译函数的引用。
也就是说,我想做的是:
Expression<Func<int, int>> f = x => x + x;
Expression<Func<int, int>> g = x => 2 + f(x);
但由于直接调用表达式是无效的,我最接近的是:
Expression<Func<int, int>> f = x => x + x;
var f_ = f.Compile();
Expression<Func<int, int>> g = x => 2 + f_(x);
...它失去了被调用的函数 f 是一个表达式这一事实。
【问题讨论】:
标签: .net linq expression-trees