protected override Expression VisitMethodCall(MethodCallExpression m) { if (m.IsContentIndexer()) { Expression obj = Visit(m.Object); return(Expression.Call(obj, m.Method, m.Arguments[0])); } if (Iterator == null && m.IsForEachMethod()) { Iterator = m.Arguments[1].RemoveCastToObject(); return(m.Arguments[0]); } return(base.VisitMethodCall(m)); }
protected override Expression VisitMethodCall(MethodCallExpression m) { if (!_scopeFound) { if (m.IsContentIndexer()) { _currentScopeIndexer = m; var finder = new ScopedForEachFinder(); Expression rewrittenIndexerChild = finder.FindIterator(m.Arguments[0]); if (finder.Iterator != null) { _scopeFound = true; ScopeToRewrite = _currentScopeIndexer; HtmlBuilder = rewrittenIndexerChild; Iterator = finder.Iterator; } } } return(base.VisitMethodCall(m)); }