public IMemberEmitter CreateMemberEmitter(IEmittableOperandProvider emittableOperandProvider) { ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider); var ilGeneratorFactory = new ILGeneratorDecoratorFactory(new OffsetTrackingILGeneratorFactory(), emittableOperandProvider); // The trampoline provider is part of the preparation stage and as such only generates expressions that are already prepared. // Therefore, it can use a MemberEmitter that does not prepare its expressions. // Should this ever change, use Method Injection to inject the MemberEmitter into the ExpressionPreparer (to solve the circular dependency). var nonPreparingMemberEmitter = new MemberEmitter(new NullExpressionPreparer(), ilGeneratorFactory); var trampolineProvider = new MethodTrampolineProvider(nonPreparingMemberEmitter); var expressionPreparer = new ExpressionPreparer(trampolineProvider); return(new MemberEmitter(expressionPreparer, ilGeneratorFactory)); }
public void SetUp() { _innerFactoryStub = new Mock <IILGeneratorFactory>(); _emittableOperandProviderMock = new Mock <IEmittableOperandProvider> (MockBehavior.Strict); _decoratorFactory = new ILGeneratorDecoratorFactory(_innerFactoryStub.Object, _emittableOperandProviderMock.Object); }
public void SetUp() { _innerFactoryStub = MockRepository.GenerateStub <IILGeneratorFactory>(); _emittableOperandProviderMock = MockRepository.GenerateStrictMock <IEmittableOperandProvider>(); _decoratorFactory = new ILGeneratorDecoratorFactory(_innerFactoryStub, _emittableOperandProviderMock); }