public IEnumerable <IGeneratedType> GenerateTypes(IEnumerable <ITypeDescription> typeDescriptions, ITypeMapper typeMapper) { if (typeDescriptions == null) { throw new ArgumentNullException("typeDescriptions"); } if (typeMapper == null) { throw new ArgumentNullException("typeMapper"); } Validate(typeDescriptions); var name = "PocoAssembly"; var assemblyName = new AssemblyName(name); var appDomain = Thread.GetDomain(); AssemblyBuilder assemblyBuilder; ModuleBuilder moduleBuilder; if (this.getTypeFromDiskAssembly) { assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, this.assemblyName); } else { assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name); } var generatedTypes = new List <IGeneratedType>(); foreach (var typeDescription in typeDescriptions) { var result = GenerateType(moduleBuilder, typeDescription, typeMapper); typeMapper.RegisterNewType(typeDescription, result); generatedTypes.Add(result); } if (this.getTypeFromDiskAssembly) { var generatedConvertedTypes = this.LoadFromDisk(assemblyBuilder, generatedTypes); return(generatedConvertedTypes); } else { return(generatedTypes); } }
public IEnumerable<IGeneratedType> GenerateTypes(IEnumerable<ITypeDescription> typeDescriptions, ITypeMapper typeMapper) { if (typeDescriptions == null) { throw new ArgumentNullException("typeDescriptions"); } if (typeMapper == null) { throw new ArgumentNullException("typeMapper"); } Validate(typeDescriptions); var name = "PocoAssembly"; var assemblyName = new AssemblyName(name); var appDomain = Thread.GetDomain(); AssemblyBuilder assemblyBuilder; ModuleBuilder moduleBuilder; if (this.getTypeFromDiskAssembly) { assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, this.assemblyName); } else { assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name); } var generatedTypes = new List<IGeneratedType>(); foreach (var typeDescription in typeDescriptions) { var result = GenerateType(moduleBuilder, typeDescription, typeMapper); typeMapper.RegisterNewType(typeDescription, result); generatedTypes.Add(result); } if (this.getTypeFromDiskAssembly) { var generatedConvertedTypes = this.LoadFromDisk(assemblyBuilder, generatedTypes); return generatedConvertedTypes; } else { return generatedTypes; } }