public static CompiledExpression Compile(Expression expression, NameResolver nameResolver)
        {
            var actual = expression;

            actual = VariadicCallRewriter.Rewrite(actual);
            actual = TextMatchingTransformer.Rewrite(actual);
            actual = LikeSyntaxTransformer.Rewrite(actual);
            actual = PropertiesObjectAccessorTransformer.Rewrite(actual);
            actual = ConstantArrayEvaluator.Evaluate(actual);
            actual = WildcardComprehensionTransformer.Expand(actual);

            return(LinqExpressionCompiler.Compile(actual, nameResolver));
        }
Esempio n. 2
0
        public static Func <LogEvent, object> CompileAndExpose(FilterExpression expression)
        {
            var actual = expression;

            actual = PropertiesObjectAccessorTransformer.Rewrite(actual);
            actual = WildcardComprehensionTransformer.Expand(actual);
            actual = LikeOperatorTransformer.Rewrite(actual);
            actual = IsOperatorTransformer.Rewrite(actual);
            actual = FilterExpressionCostReordering.Reorder(actual);
            actual = TextMatchingTransformer.Rewrite(actual);

            var compiled = LinqExpressionCompiler.Compile(actual);

            return(ctx =>
            {
                var result = compiled(ctx);
                return Representation.Expose(result);
            });
        }