Example #1
0
        public void compile_simple()
        {
            var definition = new LambdaDefinition();
            var parameter  = Expression.Parameter(typeof(string));

            definition.Arguments = new ParameterExpression[] { parameter };
            definition.Body.Add(parameter);

            var func = definition.Compile <Func <string, string> >();

            func("hello").ShouldBe("hello");
        }
Example #2
0
        public Func <Scope, object> BuildResolver()
        {
            var arranger = new MethodFrameArranger(this, this);

            arranger.Arrange(out var mode, out var top);

            var definition = new LambdaDefinition
            {
                Context = _scope
            };
            var scope = definition.RegisterExpression(_scopeArgument).As <ParameterExpression>();

            definition.Arguments = new [] { scope };

            if (top is IResolverFrame frame)
            {
                frame.WriteExpressions(definition);

                return(definition.Compile <Func <Scope, object> >());
            }

            throw new InvalidOperationException($"Frame type {top} does not implement {nameof(IResolverFrame)}");
        }