Ejemplo n.º 1
0
        protected override Expression VisitMethodCall(MethodCallExpression m)
        {
            if (m.Method.DeclaringType == typeof(SourcedElementExtensions) &&
                m.Method.Name == "Current" &&
                _comparer.Equals(m.Arguments[0], _enumerator))
            {
                return(_parameter);
            }

            return(base.VisitMethodCall(m));
        }
Ejemplo n.º 2
0
        //public methods
        public Expression <TDelegate> Rewrite <TDelegate>(Expression <TDelegate> exp)
        {
            var        current  = _rewriter.Rewrite(exp.Body);
            Expression previous = null;

            while (!_comparer.Equals(current, previous))
            {
                previous = current;
                current  = _aligner.Align(current);
                current  = _rewriter.Rewrite(current);
            }

            return(Expression.Lambda <TDelegate>(current, exp.Parameters));
        }