我正在使用
在访问者模式中一般有一种方式可以停止遍历,特别地,在.NET中,可以使用
目前我的代码能够正常工作。但是,一旦布尔标志设置为true,停止此算法的遍历可能是有意义的。
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;
}
}