Beispiel #1
0
        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);
 }
Beispiel #3
0
 public void SetUp()
 {
     _innerFactoryStub             = MockRepository.GenerateStub <IILGeneratorFactory>();
     _emittableOperandProviderMock = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();
     _decoratorFactory             = new ILGeneratorDecoratorFactory(_innerFactoryStub, _emittableOperandProviderMock);
 }