Exemple #1
0
    public static LambdaExpression Demungify(LambdaExpression ex)
    {
        var visitor = new Demungifier();
        var newBody = visitor.Visit(ex.Body);

        return(Expression.Lambda(newBody, ex.Parameters.Where(visitor.WasSeen)));
    }
Exemple #2
0
    public static LambdaExpression Demungify(LambdaExpression ex)
    {
        var visitor = new Demungifier();
        var newBody = visitor.Visit(ex.Body);
        var args    = ex.Parameters.Where(visitor.WasSeen).ToArray();
        var lambda  = Expression.Lambda(newBody, args);

        if (!args.Any() && !(lambda.Body is ConstantExpression))
        {
            // evaluate that!
            object result = lambda.Compile().DynamicInvoke();
            lambda = Expression.Lambda(Expression.Constant(result, newBody.Type));
        }
        return(lambda);
    }