Esempio n. 1
0
        public CSharpLamdaExpression GetExpression()
        {
            if (expression == null)
            {
                expression = interpreter.GetLamdaExpression();
            }

            return(expression);
        }
Esempio n. 2
0
        public Delegate GetDelegate()
        {
            if (@delegate != null)
            {
                return(@delegate);
            }

            if (expression == null)
            {
                expression = interpreter.GetLamdaExpression();
            }

            @delegate = expression.Compile();
            return(@delegate);
        }
        private Expression InvokeLamdaExpression(CSharpLamdaExpression lamdaExpression)
        {
            var instanceMember = invocationStatement.Method as InstanceMethodMemberStatement;

            var expression = lamdaExpression.GetExpression();
            var arguments  = new List <Expression>();

            if (instanceMember != null)
            {
                arguments.Add(expressionInterpreterHandler.GetExpression(instanceMember.Parent));
            }
            arguments.AddRange(invocationStatement.Arguments
                               .Select(x => expressionInterpreterHandler.GetExpression(x)).ToArray());
            return(Expression.Invoke(expression, arguments));
        }