Beispiel #1
0
        public void SetUp()
        {
            _innerILGeneratorMock         = MockRepository.GenerateStrictMock <IILGenerator>();
            _emittableOperandProviderStub = MockRepository.GenerateStub <IEmittableOperandProvider>();

            _decorator = new ILGeneratorDecorator(_innerILGeneratorMock, _emittableOperandProviderStub);
        }
        public MutableTypeCodeGenerator(
            MutableType mutableType,
            IMutableNestedTypeCodeGeneratorFactory nestedTypeCodeGeneratorFactory,
            IReflectionEmitCodeGenerator codeGenerator,
            IEmittableOperandProvider emittableOperandProvider,
            IMemberEmitter memberEmitter,
            IInitializationBuilder initializationBuilder,
            IProxySerializationEnabler proxySerializationEnabler)
        {
            ArgumentUtility.CheckNotNull("mutableType", mutableType);
            ArgumentUtility.CheckNotNull("nestedTypeCodeGeneratorFactory", nestedTypeCodeGeneratorFactory);
            ArgumentUtility.CheckNotNull("codeGenerator", codeGenerator);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("memberEmitter", memberEmitter);
            ArgumentUtility.CheckNotNull("initializationBuilder", initializationBuilder);
            ArgumentUtility.CheckNotNull("proxySerializationEnabler", proxySerializationEnabler);

            _mutableType = mutableType;
            _nestedTypeCodeGeneratorFactory = nestedTypeCodeGeneratorFactory;
            _codeGenerator             = codeGenerator;
            _emittableOperandProvider  = emittableOperandProvider;
            _memberEmitter             = memberEmitter;
            _initializationBuilder     = initializationBuilder;
            _proxySerializationEnabler = proxySerializationEnabler;
        }
Beispiel #3
0
        public void RegisterWith(IEmittableOperandProvider emittableOperandProvider, MutableType type)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("type", type);

            emittableOperandProvider.AddMapping(type, _typeBuilder);
        }
        public void RegisterWith(IEmittableOperandProvider emittableOperandProvider, MutableMethodInfo method)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("method", method);

            emittableOperandProvider.AddMapping(method, _methodBuilder);
        }
        public void SetUp()
        {
            _innerMock       = MockRepository.GenerateStrictMock <IConstructorBuilder>();
            _operandProvider = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();

            _decorator = new ConstructorBuilderDecorator(_innerMock, _operandProvider);
        }
        public void SetUp()
        {
            _typeAnalyzerMock = MockRepository.GenerateStrictMock <ITypeAnalyzer>();
            _innerMock        = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();

            _decorator = new StrongNameCheckingEmittableOperandProviderDecorator(_innerMock, _typeAnalyzerMock);
        }
Beispiel #7
0
        public void RegisterWith(IEmittableOperandProvider emittableOperandProvider, MutableFieldInfo field)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("field", field);

            _fieldBuilder.RegisterWith(emittableOperandProvider, field);
        }
Beispiel #8
0
        public void SetUp()
        {
            _innerMock       = MockRepository.GenerateStrictMock <IGenericTypeParameterBuilder> ();
            _operandProvider = MockRepository.GenerateStrictMock <IEmittableOperandProvider> ();

            _decorator = new GenericTypeParameterBuilderDecorator(_innerMock, _operandProvider);
        }
        public void RegisterWith(IEmittableOperandProvider emittableOperandProvider, MutableGenericParameter genericParameter)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("genericParameter", genericParameter);

            _genericTypeParameterBuilder.RegisterWith(emittableOperandProvider, genericParameter);
        }
        public void SetUp()
        {
            _innerMock       = new Mock <IFieldBuilder> (MockBehavior.Strict);
            _operandProvider = new Mock <IEmittableOperandProvider> (MockBehavior.Strict).Object;

            _decorator = new FieldBuilderDecorator(_innerMock.Object, _operandProvider);
        }
        public void SetUp()
        {
            _innerMock           = MockRepository.GenerateStrictMock <IMethodBuilder>();
            _operandProviderMock = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();

            _decorator = new MethodBuilderDecorator(_innerMock, _operandProviderMock);
        }
Beispiel #12
0
        public void SetUp()
        {
            _innerMock       = MockRepository.GenerateStrictMock <IMethodBaseBuilder> ();
            _operandProvider = MockRepository.GenerateStrictMock <IEmittableOperandProvider> ();

            _decorator = MockRepository.GeneratePartialMock <MethodBaseBuilderDecoratorBase> (_innerMock, _operandProvider);
        }
        public void RegisterWith(IEmittableOperandProvider emittableOperandProvider, MutableConstructorInfo constructor)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("constructor", constructor);

            emittableOperandProvider.AddMapping(constructor, _constructorBuilder);
        }
Beispiel #14
0
        public virtual void SetUp()
        {
            _mockRepository = new MockRepository();

            _mutableType = MutableTypeObjectMother.Create();
            _nestedTypeCodeGeneratorFactoryMock = _mockRepository.StrictMock <IMutableNestedTypeCodeGeneratorFactory>();
            _codeGeneratorMock             = _mockRepository.StrictMock <IReflectionEmitCodeGenerator>();
            _emittableOperandProviderMock  = _mockRepository.StrictMock <IEmittableOperandProvider> ();
            _memberEmitterMock             = _mockRepository.StrictMock <IMemberEmitter>();
            _initializationBuilderMock     = _mockRepository.StrictMock <IInitializationBuilder>();
            _proxySerializationEnablerMock = _mockRepository.StrictMock <IProxySerializationEnabler>();

            _generator = new MutableTypeCodeGenerator(
                _mutableType,
                _nestedTypeCodeGeneratorFactoryMock,
                _codeGeneratorMock,
                _emittableOperandProviderMock,
                _memberEmitterMock,
                _initializationBuilderMock,
                _proxySerializationEnablerMock);

            _typeBuilderMock        = _mockRepository.StrictMock <ITypeBuilder>();
            _debugInfoGeneratorMock = _mockRepository.StrictMock <DebugInfoGenerator>();

            _fakeInitializationField   = ReflectionObjectMother.GetSomeField();
            _fakeInitializationMethod  = ReflectionObjectMother.GetSomeMethod();
            _fakeInitializationMembers = Tuple.Create(_fakeInitializationField, _fakeInitializationMethod);
        }
        public StrongNameCheckingEmittableOperandProviderDecorator(IEmittableOperandProvider emittableOperandProvider, ITypeAnalyzer typeAnalyzer)
        {
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("typeAnalyzer", typeAnalyzer);

            _emittableOperandProvider = emittableOperandProvider;
            _typeAnalyzer             = typeAnalyzer;
        }
Beispiel #16
0
        public ILGeneratorDecoratorFactory(IILGeneratorFactory innerFactory, IEmittableOperandProvider emittableOperandProvider)
        {
            ArgumentUtility.CheckNotNull("innerFactory", innerFactory);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);

            _innerFactory             = innerFactory;
            _emittableOperandProvider = emittableOperandProvider;
        }
        protected BuilderDecoratorBase(ICustomAttributeTargetBuilder customAttributeTargetBuilder, IEmittableOperandProvider emittableOperandProvider)
        {
            ArgumentUtility.CheckNotNull("customAttributeTargetBuilder", customAttributeTargetBuilder);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);

            _customAttributeTargetBuilder = customAttributeTargetBuilder;
            EmittableOperandProvider      = emittableOperandProvider;
        }
Beispiel #18
0
        public ILGeneratorDecorator(IILGenerator innerIlGenerator, IEmittableOperandProvider emittableOperandProvider)
        {
            ArgumentUtility.CheckNotNull("innerIlGenerator", innerIlGenerator);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);

            _innerILGenerator         = innerIlGenerator;
            _emittableOperandProvider = emittableOperandProvider;
        }
Beispiel #19
0
        public void SetUp()
        {
            _moduleBuilderFactoryMock  = MockRepository.GenerateStrictMock <IModuleBuilderFactory>();
            _configurationProviderMock = MockRepository.GenerateStrictMock <IConfigurationProvider>();

            _flusher = new ReflectionEmitCodeGenerator(_moduleBuilderFactoryMock, _configurationProviderMock);

            _moduleBuilderMock            = MockRepository.GenerateStrictMock <IModuleBuilder>();
            _emittableOperandProviderMock = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();
        }
Beispiel #20
0
 public static CodeGenerationContext GetSomeContext(
     MutableType mutableType  = null,
     ITypeBuilder typeBuilder = null,
     DebugInfoGenerator debugInfoGenerator = null,
     IEmittableOperandProvider emittableOperandProvider = null)
 {
     return(new CodeGenerationContext(
                mutableType ?? MutableTypeObjectMother.Create(),
                typeBuilder ?? new Mock <ITypeBuilder>().Object,
                debugInfoGenerator ?? new Mock <DebugInfoGenerator>().Object,
                emittableOperandProvider ?? new Mock <IEmittableOperandProvider>().Object));
 }
        public CodeGenerationContext(
            MutableType mutableType, ITypeBuilder typeBuilder, DebugInfoGenerator debugInfoGeneratorOrNull, IEmittableOperandProvider emittableOperandProvider)
        {
            ArgumentUtility.CheckNotNull("mutableType", mutableType);
            ArgumentUtility.CheckNotNull("typeBuilder", typeBuilder);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);

            _mutableType              = mutableType;
            _typeBuilder              = typeBuilder;
            _debugInfoGenerator       = debugInfoGeneratorOrNull;
            _emittableOperandProvider = emittableOperandProvider;
        }
Beispiel #22
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));
        }
Beispiel #23
0
        public void SetUp()
        {
            _expressionPreparerMock = MockRepository.GenerateStrictMock <IExpressionPreparer>();
            _ilGeneratorFactoryStub = MockRepository.GenerateStub <IILGeneratorFactory>();

            _emitter = new MemberEmitter(_expressionPreparerMock, _ilGeneratorFactoryStub);

            _typeBuilderMock = MockRepository.GenerateStrictMock <ITypeBuilder>();
            _emittableOperandProviderMock = MockRepository.GenerateStrictMock <IEmittableOperandProvider>();

            _context = CodeGenerationContextObjectMother.GetSomeContext(
                typeBuilder: _typeBuilderMock, emittableOperandProvider: _emittableOperandProviderMock);

            _fakeBody = ExpressionTreeObjectMother.GetSomeExpression();
        }
        public ITypeBuilder DefineType(string name, TypeAttributes attributes, IEmittableOperandProvider emittableOperandProvider)
        {
            ArgumentUtility.CheckNotNullOrEmpty("name", name);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);

            if (_moduleContext.ModuleBuilder == null)
            {
                var assemblyName = GetNextAssemblyName();
                _moduleContext.ModuleBuilder = _moduleBuilderFactory.CreateModuleBuilder(assemblyName, _assemblyDirectory, _forceStrongNaming, _keyFilePath);
            }

            var typeBuilder = _moduleContext.ModuleBuilder.DefineType(name, attributes);

            return(new TypeBuilderDecorator(typeBuilder, emittableOperandProvider));
        }
        private IMutableTypeCodeGenerator CreateGenerator(
            MutableType mutableType, IEmittableOperandProvider emittableOperandProvider, IMemberEmitter memberEmitter)
        {
            var nestedTypeCodeGeneratorFactory = new MutableNestedTypeCodeGeneratorFactory(
                _codeGenerator, emittableOperandProvider, memberEmitter, _initializationBuilder, _proxySerializationEnabler);

            return(new MutableTypeCodeGenerator(
                       mutableType,
                       nestedTypeCodeGeneratorFactory,
                       _codeGenerator,
                       emittableOperandProvider,
                       memberEmitter,
                       _initializationBuilder,
                       _proxySerializationEnabler));
        }
        public MutableNestedTypeCodeGeneratorFactory(
            IReflectionEmitCodeGenerator reflectionEmitCodeGenerator,
            IEmittableOperandProvider emittableOperandProvider,
            IMemberEmitter memberEmitter,
            IInitializationBuilder initializationBuilder,
            IProxySerializationEnabler proxySerializationEnabler)
        {
            ArgumentUtility.CheckNotNull("reflectionEmitCodeGenerator", reflectionEmitCodeGenerator);
            ArgumentUtility.CheckNotNull("emittableOperandProvider", emittableOperandProvider);
            ArgumentUtility.CheckNotNull("memberEmitter", memberEmitter);
            ArgumentUtility.CheckNotNull("initializationBuilder", initializationBuilder);
            ArgumentUtility.CheckNotNull("proxySerializationEnabler", proxySerializationEnabler);

            _reflectionEmitCodeGenerator = reflectionEmitCodeGenerator;
            _emittableOperandProvider    = emittableOperandProvider;
            _memberEmitter             = memberEmitter;
            _initializationBuilder     = initializationBuilder;
            _proxySerializationEnabler = proxySerializationEnabler;
        }
Beispiel #27
0
        public MutableNestedTypeCodeGenerator(
            ITypeBuilder enclosingTypeBuilder,
            MutableType mutableType,
            IMutableNestedTypeCodeGeneratorFactory nestedTypeCodeGeneratorFactory,
            IReflectionEmitCodeGenerator codeGenerator,
            IEmittableOperandProvider emittableOperandProvider,
            IMemberEmitter memberEmitter,
            IInitializationBuilder initializationBuilder,
            IProxySerializationEnabler proxySerializationEnabler)
            : base(
                mutableType,
                nestedTypeCodeGeneratorFactory,
                codeGenerator,
                emittableOperandProvider,
                memberEmitter,
                initializationBuilder,
                proxySerializationEnabler)
        {
            ArgumentUtility.CheckNotNull("enclosingTypeBuilder", enclosingTypeBuilder);

            _enclosingTypeBuilder = enclosingTypeBuilder;
        }
 protected MethodBaseBuilderDecoratorBase(IMethodBaseBuilder methodBaseBuilder, IEmittableOperandProvider emittableOperandProvider)
     : base(methodBaseBuilder, emittableOperandProvider)
 {
     _methodBaseBuilder = methodBaseBuilder;
 }
 public EventBuilderDecorator(IEventBuilder eventBuilder, IEmittableOperandProvider emittableOperandProvider)
     : base(eventBuilder, emittableOperandProvider)
 {
     _eventBuilder = eventBuilder;
 }
 public GenericTypeParameterBuilderDecorator(
     IGenericTypeParameterBuilder genericTypeParameterBuilder, IEmittableOperandProvider emittableOperandProvider)
     : base(genericTypeParameterBuilder, emittableOperandProvider)
 {
     _genericTypeParameterBuilder = genericTypeParameterBuilder;
 }