给定如下表达式:
Int32 five = 5;
Express(num => num == five);
其中Express
类似于
void Express(Expression<Predicate<Int32>> predicatesGonnaPredicate)
{
....
}
解析上面的表达式时,如何用编程方式确定5已被关闭?我可以想出很多方法来做,但一定有一些合适的方法来识别它?
如果你想用lambda的值替换所有不依赖于参数的子表达式,你可以使用Matt Warren的文章构建一个可查询的提供者-第三部分中的PartialEval
。
例如,在您的例子中,结果将是一个表达式num => num == 5
。