internal void InvokeBaseConstructor(ConstructorInfo constructor, params ArgumentReference[] arguments)
 {
     AddStatement(
         new ExpressionStatement(
             new ConstructorInvocationExpression(constructor,
                                                 ArgumentsUtil.ConvertArgumentReferenceToExpression(arguments))));
 }
Beispiel #2
0
        private void ReplicateBaseTypeConstructor(ConstructorInfo constructor, Action <ConstructorEmitter> preStatementsAdder, Action <ConstructorEmitter> postStatementsAdder)
        {
            ArgumentUtility.CheckNotNull("constructor", constructor);
            ArgumentUtility.CheckNotNull("preStatementsAdder", preStatementsAdder);
            ArgumentUtility.CheckNotNull("postStatementsAdder", postStatementsAdder);

            ArgumentReference[] arguments      = ArgumentsUtil.ConvertToArgumentReference(constructor.GetParameters());
            ConstructorEmitter  newConstructor = InnerEmitter.CreateConstructor(arguments);

            preStatementsAdder(newConstructor);
            Expression[] argumentExpressions = ArgumentsUtil.ConvertArgumentReferenceToExpression(arguments);
            newConstructor.CodeBuilder.AddStatement(new ConstructorInvocationStatement(constructor, argumentExpressions));
            postStatementsAdder(newConstructor);

            newConstructor.CodeBuilder.AddStatement(new ReturnStatement());
        }
Beispiel #3
0
 public void InvokeBaseConstructor(IConstructorInfo constructor, params ArgumentReference[] arguments)
 {
     AddStatement(
         new ConstructorInvocationStatement(constructor.AsConstructorInfo(),
                                            ArgumentsUtil.ConvertArgumentReferenceToExpression(arguments)));
 }