protected override Expression VisitParameter(ParameterExpression p) { InvocationExpander expander = this; while (null != expander) { if (expander._parameter == p) { return(base.Visit(expander._expansion)); } expander = expander._previous; } return(base.VisitParameter(p)); }
public InvocationExpander(ParameterExpression parameter, Expression expansion, InvocationExpander previous) { _parameter = parameter; _expansion = expansion; _previous = previous; }