/// <summary> /// Initializes a new instance of the <see cref="T:MemberAccessorFactory"/> class. /// </summary> /// <param name="allowCodeGeneration">if set to <c>true</c> [allow code generation].</param> public MemberAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { // Detect runtime environment and create the appropriate factory if (Environment.Version.Major >= 2) { #if dotnet2 _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateDelegatePropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateDynamicFieldAccessor); #endif } else { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "iBATIS.FastPropertyAccessor" + HashCodeProvider.GetIdentityHashCode(this).ToString(); // Create a new assembly with one module _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); _moduleBuilder = _assemblyBuilder.DefineDynamicModule(assemblyName.Name + ".dll"); _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateEmitPropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateFieldAccessor); } } else { _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateReflectionPropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateReflectionFieldAccessor); } }
/// <summary> /// Initializes a new instance of the <see cref="T:MemberAccessorFactory"/> class. /// </summary> /// <param name="allowCodeGeneration">if set to <c>true</c> [allow code generation].</param> public MemberAccessorFactory(bool allowCodeGeneration) { if (allowCodeGeneration) { // Detect runtime environment and create the appropriate factory if (Environment.Version.Major >= 2) { #if dotnet2 _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateDelegatePropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateDynamicFieldAccessor); #endif } else { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "iBATIS.FastPropertyAccessor"+HashCodeProvider.GetIdentityHashCode(this).ToString(); // Create a new assembly with one module _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); _moduleBuilder = _assemblyBuilder.DefineDynamicModule(assemblyName.Name + ".dll"); _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateEmitPropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateFieldAccessor); } } else { _createPropertyAccessor = new CreateMemberPropertyAccessor(CreateReflectionPropertyAccessor); _createFieldAccessor = new CreateMemberFieldAccessor(CreateReflectionFieldAccessor); } }