internal void InvokeBaseConstructor(ConstructorInfo constructor, params ArgumentReference[] arguments) { AddStatement( new ExpressionStatement( new ConstructorInvocationExpression(constructor, ArgumentsUtil.ConvertArgumentReferenceToExpression(arguments)))); }
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()); }
public void InvokeBaseConstructor(IConstructorInfo constructor, params ArgumentReference[] arguments) { AddStatement( new ConstructorInvocationStatement(constructor.AsConstructorInfo(), ArgumentsUtil.ConvertArgumentReferenceToExpression(arguments))); }