public ClassBuilder(string name, int indent) : base(name) { m_baseClass = GetTypeReference(typeof(object)); m_indent = indent; m_constructor = new ConstructorBuilder(name, indent + 1); }
public void SetUp() { _innerMock = MockRepository.GenerateStrictMock <IConstructorBuilder>(); _operandProvider = MockRepository.GenerateStrictMock <IEmittableOperandProvider>(); _decorator = new ConstructorBuilderDecorator(_innerMock, _operandProvider); }
/// <summary> /// Initializes a new instance of the <see cref="TypeFactoryContext"/> class. /// </summary> /// <param name="typeBuilder">The <see cref="TypeBuilder"/> being use to create the type.</param> /// <param name="newType">The new type being built.</param> /// <param name="baseType">The base type being built on.</param> /// <param name="serviceProvider">The current dependency injection scope</param> /// <param name="baseObjectField">The <see cref="FieldBuilder"/> that holds the base type instance.</param> /// <param name="serviceProviderField">The <see cref="FieldBuilder"/> that holds the <see cref="IServiceProvider"/> instance.</param> /// <param name="ctorBuilder">The <see cref="ConstructorBuilder"/> for the types constructor.</param> public TypeFactoryContext( ITypeBuilder typeBuilder, Type newType, Type baseType, IServiceProvider serviceProvider, IFieldBuilder baseObjectField, IFieldBuilder serviceProviderField, IConstructorBuilder ctorBuilder = null) : this(typeBuilder, newType, new Type[] { baseType }, serviceProvider, baseObjectField, serviceProviderField, ctorBuilder) { }
/// <summary> /// Initializes a new instance of the <see cref="ProxyBuilderContext"/> class. /// </summary> /// <param name="typeBuilder">The <see cref="TypeBuilder"/> being use to create the type.</param> /// <param name="newType">The new type being built.</param> /// <param name="baseTypes">The base types being built on.</param> /// <param name="baseObjectField">The <see cref="FieldBuilder"/> that holds the base type instance.</param> /// <param name="ctorBuilder">The <see cref="ConstructorBuilder"/> for the types constructor.</param> public ProxyBuilderContext( ITypeBuilder typeBuilder, Type newType, Type[] baseTypes, IFieldBuilder baseObjectField, IConstructorBuilder ctorBuilder = null) { this.TypeBuilder = typeBuilder; this.NewType = newType; this.BaseTypes = baseTypes; this.BaseObjectField = baseObjectField; this.ConstructorBuilder = ctorBuilder; }
/// <summary> /// Initializes a new instance of the <see cref="ProxyBuilderContext"/> class. /// </summary> /// <param name="typeBuilder">The <see cref="TypeBuilder"/> being use to create the type.</param> /// <param name="newType">The new type being built.</param> /// <param name="baseType">The base type being built on.</param> /// <param name="baseObjectField">The <see cref="FieldBuilder"/> that holds the base type instance.</param> /// <param name="ctorBuilder">The <see cref="ConstructorBuilder"/> for the types constructor.</param> public ProxyBuilderContext( ITypeBuilder typeBuilder, Type newType, Type baseType, IFieldBuilder baseObjectField, IConstructorBuilder ctorBuilder = null) : this(typeBuilder, newType, new Type[] { baseType }, baseObjectField, ctorBuilder) { }
/// <summary> /// Initializes a new instance of the <see cref="TypeFactoryContext"/> class. /// </summary> /// <param name="typeBuilder">The <see cref="ITypeBuilder"/> being use to create the type.</param> /// <param name="newType">The new type being built.</param> /// <param name="baseTypes">The base types being built on.</param> /// <param name="serviceProvider">The current dependency injection scope</param> /// <param name="baseObjectField">The <see cref="IFieldBuilder"/> that holds the base type instance.</param> /// <param name="serviceProviderField">The <see cref="IFieldBuilder"/> that holds the <see cref="IServiceProvider"/> instance.</param> /// <param name="ctorBuilder">The <see cref="ConstructorBuilder"/> for the Itypes constructor.</param> public TypeFactoryContext( ITypeBuilder typeBuilder, Type newType, Type[] baseTypes, IServiceProvider serviceProvider, IFieldBuilder baseObjectField, IFieldBuilder serviceProviderField, IConstructorBuilder ctorBuilder = null) { this.TypeBuilder = typeBuilder; this.NewType = newType; this.BaseTypes = baseTypes; this.ServiceProvider = serviceProvider; this.BaseObjectField = baseObjectField; this.ServiceProviderField = serviceProviderField; this.ConstructorBuilder = ctorBuilder; }
/// <summary> /// Creates an instance of a LibraryInterfaceMapper using the specified builder. /// </summary> /// <param name="delegateBuilder"></param> /// <param name="ctorBuilder"></param> /// <param name="methodWrapper"></param> /// <exception cref="ArgumentNullException">Thrown if <see paramref="delegateBuilder"/>, <see paramref="ctorBuilder"/> or <see paramref="methodWrapper"/> is null.</exception> public LibraryInterfaceMapper(IDelegateTypeBuilder delegateBuilder, IConstructorBuilder ctorBuilder, IMethodCallWrapper methodWrapper) { if (delegateBuilder == null) { throw new ArgumentNullException("delegateBuilder"); } if (ctorBuilder == null) { throw new ArgumentNullException("ctorBuilder"); } if (methodWrapper == null) { throw new ArgumentNullException("methodWrapper"); } this.constructorBuilder = ctorBuilder; this.delegateBuilder = delegateBuilder; this.methodWrapper = methodWrapper; }
/// <summary> /// Defines the constructor as static. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder Static(this IConstructorBuilder builder) { builder.CallingConvention(CallingConventions.Standard); return(builder); }
public ConstructorBuilderDecorator(IConstructorBuilder constructorBuilder, IEmittableOperandProvider emittableOperandProvider) : base(constructorBuilder, emittableOperandProvider) { _constructorBuilder = constructorBuilder; }
/// <summary> /// Adds the 'SpecialName' attribute to the constructor. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder SpecialName(this IConstructorBuilder builder) { builder.MethodAttributes |= MethodAttributes.SpecialName; return(builder); }
/// <summary> /// Adds the 'FamORAssem' attribute to the constructor. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder FamORAssem(this IConstructorBuilder builder) { builder.MethodAttributes |= MethodAttributes.FamORAssem; return(builder); }
/// <summary> /// Adds the 'Assembly' attribute to the constructor. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder Assembly(this IConstructorBuilder builder) { builder.MethodAttributes |= MethodAttributes.Assembly; return(builder); }
/// <summary> /// Adds the 'HideBySig' attribute to the constructor. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder HideBySig(this IConstructorBuilder builder) { builder.MethodAttributes |= MethodAttributes.HideBySig; return(builder); }
/// <summary> /// Adds the 'Private' attribute to the constructor. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder Private(this IConstructorBuilder builder) { builder.MethodAttributes |= MethodAttributes.Private; return(builder); }
/// <summary> /// Adds a parameter. /// </summary> /// <param name="builder">A <see cref="IConstructorBuilder"/> instance.</param> /// <param name="parameterName">The parameter name.null</param> /// <returns>The <see cref="IConstructorBuilder"/> instance.</returns> public static IConstructorBuilder Param <T>(this IConstructorBuilder builder, string parameterName) { builder.Param(typeof(T), parameterName); return(builder); }
protected virtual void AddDependencies(IClassBuilder locatorBuilder, IConstructorBuilder proxyCtor, Type controllerType) { }
private Dictionary <string, INamedReference> ProjectFactories(IEnumerable <InstanceRecord> records, IClassBuilder locator, out IConstructorBuilder ctor) { var result = new Dictionary <string, INamedReference>(); ctor = locator.WithConstructor().WithModifier("public"); var parentLocatorParam = ctor.WithParam <IServiceLocator>("parentLocator"); ctor.CallsBase().WithParam(parentLocatorParam); var factoriesParam = ctor.WithParam("factories", typeof(Dictionary <string, Func <IServiceLocator, object> >)); var constructor = ctor; Action <NamedFactory> addFactory = factory => { var field = locator.HasField <Func <IServiceLocator, object> >() .WithModifier("readonly") .WithModifier("private"); constructor.Body.Assign( field, a => a.Write(factoriesParam).Write("[\"").Write(factory.Name).Write("\"]")); result.Add(factory.Name, field); }; foreach (var record in records) { if (record.Factory != null) { addFactory(record.Factory); } if (record.ConstructorParameters != null) { foreach (var ctorFactory in record.ConstructorParameters.Where(p => p.ValueProvider != null).Select(p => p.ValueProvider)) { addFactory(ctorFactory); } } } return(result); }