MSDN说:
编译器也可以构建一个 表达树给你。一个 编译器生成的表达式树是 总是植根于类型的节点 表达式来; TDelegate取代;就是它 根节点代表一个lambda 表达
但是如果我想构建一个植根于MethodCallExpression,BinaryExpression等类型节点的表达式树呢?并且不想手动执行此操作。
答案 0 :(得分:1)
解决方法是声明2个辅助函数
public Expression GetBody(Expression<Action> lambda)
{
return lambda.Body;
}
public Expression GetBody<TResult>(Expression<Func<TResult>> lambda)
{
return lambda.Body;
}
用法示例:
var e1 = (MethodCallExpression)GetBody(() => this.FunA());
var e2 = (ConstantExpression)GetBody(() => 4 + 5);
var e3 = (BinaryExpression)GetBody(() => a + b);