你怎么知道变量/属性何时被关闭?

时间:2013-04-18 18:40:00

标签: c# reflection expression-trees

给出如下表达式:

Int32 five = 5;

Express(num => num == five);

其中Express类似于

void Express(Expression<Predicate<Int32>> predicatesGonnaPredicate)
{
    ....
}

在解析上面的表达式时,我如何以编程方式确定五个已被关闭?我可以想到很多黑客的方法,但是必须有一些正确的方法来识别它?

1 个答案:

答案 0 :(得分:1)

如果要将不依赖于lambda参数的所有子表达式替换为其值,可以使用Matt Warren的文章Building an IQueryable Provider - Part III中的PartialEval

例如,在您的情况下,结果将是表达式num => num == 5