/// <summary> /// Initializes a new instance of the <see cref="SetAccessorFactory"/> class. /// </summary> /// <param name="allowCodeGeneration">if set to <c>true</c> [allow code generation].</param> public SetAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { // Detect runtime environment and create the appropriate factory if (Environment.Version.Major >= 2) { _createPropertySetAccessor = new CreatePropertySetAccessor(CreateDynamicPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateDynamicFieldSetAccessor); } else { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "iBATIS.FastSetAccessor" + HashCodeProvider.GetIdentityHashCode(this); // Create a new assembly with one module _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); _moduleBuilder = _assemblyBuilder.DefineDynamicModule(assemblyName.Name + ".dll"); _createPropertySetAccessor = new CreatePropertySetAccessor(CreatePropertyAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateFieldAccessor); } } else { _createPropertySetAccessor = new CreatePropertySetAccessor(CreateReflectionPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateReflectionFieldSetAccessor); } }
/// <summary> /// Initializes a new instance of the <see cref="SetAccessorFactory"/> class. /// </summary> /// <param name="allowCodeGeneration">if set to <c>true</c> [allow code generation].</param> public SetAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { // Detect runtime environment and create the appropriate factory if (Environment.Version.Major >= 2) { _createPropertySetAccessor = new CreatePropertySetAccessor(CreateDynamicPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateDynamicFieldSetAccessor); } else { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "MyBatis.FastSetAccessor" + HashCodeProvider.GetIdentityHashCode(this); // Create a new assembly with one module _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); _moduleBuilder = _assemblyBuilder.DefineDynamicModule(assemblyName.Name + ".dll"); _createPropertySetAccessor = new CreatePropertySetAccessor(CreatePropertyAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateFieldAccessor); } } else { _createPropertySetAccessor = new CreatePropertySetAccessor(CreateReflectionPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateReflectionFieldSetAccessor); } }
/// <summary> /// Initializes a new instance of the <see cref="SetAccessorFactory"/> class. /// </summary> /// <param name="allowCodeGeneration">if set to <c>true</c> [allow code generation].</param> public SetAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { // Detect runtime environment and create the appropriate factory if (Environment.Version.Major >= 2) { #if dotnet2 _createPropertySetAccessor = new CreatePropertySetAccessor(CreateDynamicPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateDynamicFieldSetAccessor); #endif } else { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "iBATIS.FastSetAccessor" + HashCodeProvider.GetIdentityHashCode(this).ToString(); // Create a new assembly with one module _assemblyBuilder = System.Reflection.Emit.AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); _moduleBuilder = _assemblyBuilder.DefineDynamicModule(assemblyName.Name + ".dll"); _createPropertySetAccessor = new CreatePropertySetAccessor(CreatePropertyAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateFieldAccessor); } } else { _createPropertySetAccessor = new CreatePropertySetAccessor(CreateReflectionPropertySetAccessor); _createFieldSetAccessor = new CreateFieldSetAccessor(CreateReflectionFieldSetAccessor); } }
public SetAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { if (Environment.Version.Major >= 2) { this._createPropertySetAccessor = new CreatePropertySetAccessor(this.CreateDynamicPropertySetAccessor); this._createFieldSetAccessor = new CreateFieldSetAccessor(this.CreateDynamicFieldSetAccessor); } else { AssemblyName name = new AssemblyName { Name = "iBATIS.FastSetAccessor" + HashCodeProvider.GetIdentityHashCode(this).ToString() }; this._assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run); this._moduleBuilder = this._assemblyBuilder.DefineDynamicModule(name.Name + ".dll"); this._createPropertySetAccessor = new CreatePropertySetAccessor(this.CreatePropertyAccessor); this._createFieldSetAccessor = new CreateFieldSetAccessor(this.CreateFieldAccessor); } } else { this._createPropertySetAccessor = new CreatePropertySetAccessor(this.CreateReflectionPropertySetAccessor); this._createFieldSetAccessor = new CreateFieldSetAccessor(this.CreateReflectionFieldSetAccessor); } }