private IStatement IfNotNull(Reference targetReference)
        {
            var statements = new BlockStatement();
            var arguments  = ArgumentsUtil.ConvertToArgumentReferenceExpression(MethodToOverride.GetParameters());

            statements.AddStatement(new ReturnStatement(
                                        new MethodInvocationExpression(
                                            targetReference,
                                            MethodToOverride,
                                            arguments)
            {
                VirtualCall = true
            }));
            return(statements);
        }
        private Expression IfNotNull(Reference targetReference)
        {
            var expression = new MultiStatementExpression();
            var arguments  = ArgumentsUtil.ConvertToArgumentReferenceExpression(MethodToOverride.GetParameters());

            expression.AddStatement(new ReturnStatement(
                                        new MethodInvocationExpression(
                                            targetReference,
                                            MethodToOverride,
                                            arguments)
            {
                VirtualCall = true
            }));
            return(expression);
        }
예제 #3
0
        protected override MethodEmitter BuildProxiedMethodBody(MethodEmitter emitter, ClassEmitter @class, ProxyGenerationOptions options, INamingScope namingScope)
        {
            var targetReference = getTargetReference(@class, MethodToOverride);
            var arguments       = ArgumentsUtil.ConvertToArgumentReferenceExpression(MethodToOverride.GetParameters());

            emitter.CodeBuilder.AddStatement(new ReturnStatement(
                                                 new MethodInvocationExpression(
                                                     targetReference,
                                                     MethodToOverride,
                                                     arguments)
            {
                VirtualCall = true
            }));
            return(emitter);
        }