From 03551252f6c2864370373c5571309bffa31834fc Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 29 Dec 2020 15:55:34 +0800 Subject: [PATCH] DI support of AutoMapper --- .../Abp/AutoMapper/AbpAutoMapperModule.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs index 214872e371..89092faed4 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs @@ -13,7 +13,7 @@ namespace Volo.Abp.AutoMapper typeof(AbpObjectMappingModule), typeof(AbpObjectExtendingModule), typeof(AbpAuditingModule) - )] + )] public class AbpAutoMapperModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) @@ -21,16 +21,11 @@ namespace Volo.Abp.AutoMapper context.Services.AddAutoMapperObjectMapper(); var mapperAccessor = new MapperAccessor(); - context.Services.AddSingleton(_ => mapperAccessor); - context.Services.AddSingleton(_ => mapperAccessor); + context.Services.AddSingleton(_ => mapperAccessor); + context.Services.Add(new ServiceDescriptor(typeof(IMapperAccessor), CreateMappings, ServiceLifetime.Singleton)); } - public override void OnPreApplicationInitialization(ApplicationInitializationContext context) - { - CreateMappings(context.ServiceProvider); - } - - private void CreateMappings(IServiceProvider serviceProvider) + private IMapperAccessor CreateMappings(IServiceProvider serviceProvider) { using (var scope = serviceProvider.CreateScope()) { @@ -48,7 +43,7 @@ namespace Volo.Abp.AutoMapper { foreach (var profileType in options.ValidatingProfiles) { - config.AssertConfigurationIsValid(((Profile)Activator.CreateInstance(profileType)).ProfileName); + config.AssertConfigurationIsValid(((Profile) Activator.CreateInstance(profileType)).ProfileName); } } @@ -59,7 +54,10 @@ namespace Volo.Abp.AutoMapper ValidateAll(mapperConfiguration); - scope.ServiceProvider.GetRequiredService().Mapper = mapperConfiguration.CreateMapper(); + var mapperAccessor = scope.ServiceProvider.GetRequiredService(); + mapperAccessor.Mapper = new Mapper(mapperConfiguration, serviceProvider.GetService); + + return mapperAccessor; } } }