我正在使用ExpressionVisitor
解析表达式树来确定它是否包含指定的参数。找到参数后,继续遍历就没有意义了。
有没有什么办法可以阻止访问者模式的遍历,更具体地说是ExpressionVisitor
.NET中的遍历?
这就是我到目前为止所拥有的,并且按预期工作。但是,一旦布尔标志设置为 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;
}
}