【发布时间】:2016-04-20 08:02:15
【问题描述】:
我正在使用ExpressionVisitor 来解析表达式树,以确定它是否包含指定的参数。找到参数后,继续遍历就没有意义了。
有什么方法可以停止遍历,通常是访问者模式,尤其是 .NET 中的 ExpressionVisitor?
这是我目前所拥有的,它按预期工作。但是,一旦布尔标志设置为 true,就该算法停止遍历是有意义的。
public class ExpressionContainsParameterVisitor : ExpressionVisitor
{
private bool expressionContainsParameter_;
private ParameterExpression parameter_;
public bool Parse(Expression expression, ParameterExpression parameterExpression)
{
parameter_ = parameterExpression;
expressionContainsParameter_ = false;
Visit(expression);
return expressionContainsParameter_;
}
protected override Expression VisitParameter(ParameterExpression node)
{
if (node == parameter_)
{
expressionContainsParameter_ = true;
}
return node;
}
}
【问题讨论】:
标签: c# .net expression-trees visitor-pattern expressionvisitor