From 7bc4f26326cda86c74658f5ca8d2f0e1e5686d80 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 23 Nov 2022 09:27:10 +0800 Subject: [PATCH] Undo remove `IMapperAccessor`. --- .../Abp/AutoMapper/AbpAutoMapperModule.cs | 6 +++++ .../AutoMapperAutoObjectMappingProvider.cs | 25 +++++++------------ .../Volo/Abp/AutoMapper/IMapperAccessor.cs | 8 ++++++ .../Volo/Abp/AutoMapper/MapperAccessor.cs | 8 ++++++ .../AbpAutoMapperObjectMapperExtensions.cs | 2 +- 5 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/IMapperAccessor.cs create mode 100644 framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/MapperAccessor.cs 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 bac015c287..6c1ba35ee3 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperModule.cs @@ -52,5 +52,11 @@ public class AbpAutoMapperModule : AbpModule }); context.Services.AddTransient(sp => sp.GetRequiredService().CreateMapper(sp.GetService)); + + context.Services.AddTransient(sp => new MapperAccessor() + { + Mapper = sp.GetRequiredService() + }); + context.Services.AddTransient(provider => provider.GetRequiredService()); } } diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperAutoObjectMappingProvider.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperAutoObjectMappingProvider.cs index a74ea7b57e..fcddf444ca 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperAutoObjectMappingProvider.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperAutoObjectMappingProvider.cs @@ -1,37 +1,30 @@ -using System; -using AutoMapper; -using Volo.Abp.ObjectMapping; - +using Volo.Abp.ObjectMapping; namespace Volo.Abp.AutoMapper; public class AutoMapperAutoObjectMappingProvider : AutoMapperAutoObjectMappingProvider, IAutoObjectMappingProvider { - public AutoMapperAutoObjectMappingProvider(IMapper mapper) - : base(mapper) + public AutoMapperAutoObjectMappingProvider(IMapperAccessor mapperAccessor) + : base(mapperAccessor) { } } -public class AutoMapperAutoObjectMappingProvider : IAutoObjectMappingProvider, IDisposable +public class AutoMapperAutoObjectMappingProvider : IAutoObjectMappingProvider { - public IMapper Mapper { get; } + public IMapperAccessor MapperAccessor { get; } - public AutoMapperAutoObjectMappingProvider(IMapper mapper) + public AutoMapperAutoObjectMappingProvider(IMapperAccessor mapperAccessor) { - Mapper = mapper; + MapperAccessor = mapperAccessor; } public virtual TDestination Map(object source) { - return Mapper.Map(source); + return MapperAccessor.Mapper.Map(source); } public virtual TDestination Map(TSource source, TDestination destination) { - return Mapper.Map(source, destination); - } - - public void Dispose() - { + return MapperAccessor.Mapper.Map(source, destination); } } diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/IMapperAccessor.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/IMapperAccessor.cs new file mode 100644 index 0000000000..9997289a22 --- /dev/null +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/IMapperAccessor.cs @@ -0,0 +1,8 @@ +using AutoMapper; + +namespace Volo.Abp.AutoMapper; + +public interface IMapperAccessor +{ + IMapper Mapper { get; } +} diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/MapperAccessor.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/MapperAccessor.cs new file mode 100644 index 0000000000..7e2f94819f --- /dev/null +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/MapperAccessor.cs @@ -0,0 +1,8 @@ +using AutoMapper; + +namespace Volo.Abp.AutoMapper; + +internal class MapperAccessor : IMapperAccessor +{ + public IMapper Mapper { get; set; } +} diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/ObjectMapping/AbpAutoMapperObjectMapperExtensions.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/ObjectMapping/AbpAutoMapperObjectMapperExtensions.cs index 91511586d3..33d73a77e6 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/ObjectMapping/AbpAutoMapperObjectMapperExtensions.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/ObjectMapping/AbpAutoMapperObjectMapperExtensions.cs @@ -14,7 +14,7 @@ public static class AbpAutoMapperObjectMapperExtensions { if (autoObjectMappingProvider is AutoMapperAutoObjectMappingProvider autoMapperAutoObjectMappingProvider) { - return autoMapperAutoObjectMappingProvider.Mapper; + return autoMapperAutoObjectMappingProvider.MapperAccessor.Mapper; } throw new AbpException($"Given object is not an instance of {typeof(AutoMapperAutoObjectMappingProvider).AssemblyQualifiedName}. The type of the given object it {autoObjectMappingProvider.GetType().AssemblyQualifiedName}");