を使用してExpressionVisitor
式ツリーを解析し、指定されたパラメーターが含まれているかどうかを調べています。パラメータを見つけたら、トラバーサルを続けても意味がありません。
一般的に訪問者パターンで、より具体的には .NETでトラバーサルを停止する方法はありますか?ExpressionVisitor
これは私がこれまでに持っているものであり、期待どおりに機能しています。しかし、boolean フラグが 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;
}
}