Ejemplo n.º 1
0
            public static LambdaExpression Rewrite(Expression body, ParameterExpression[] parameters)
            {
                var rewriter = new ParamArrayRewriter(parameters);
                var newBody  = rewriter.Visit(body);

                return(Expression.Lambda(newBody, paramParam));
            }
Ejemplo n.º 2
0
            public static LambdaExpression Extract(Expression exp, out IList <object> values)
            {
                var extractor = new ConstantExtractor();
                var body      = extractor.Visit(exp);

                values = extractor.constantValues.ToArray();
                if (values.Count >= 5)
                {
                    // Can't create a lambda with more than 4 parameters.  Go figure.
                    values = new object[] { values };
                    return(ParamArrayRewriter.Rewrite(body, extractor.newParameters.ToArray()));
                }
                return(Expression.Lambda(body, extractor.newParameters.ToArray()));
            }