From e16c958e5ba47834dc1624e09ed8e5074a60d1c6 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 28 Apr 2021 19:20:40 +0800 Subject: refator: ... --- BackEnd/Timeline/Services/Mapper/GenericMapper.cs | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 BackEnd/Timeline/Services/Mapper/GenericMapper.cs (limited to 'BackEnd/Timeline/Services/Mapper/GenericMapper.cs') diff --git a/BackEnd/Timeline/Services/Mapper/GenericMapper.cs b/BackEnd/Timeline/Services/Mapper/GenericMapper.cs new file mode 100644 index 00000000..4dd44828 --- /dev/null +++ b/BackEnd/Timeline/Services/Mapper/GenericMapper.cs @@ -0,0 +1,37 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Security.Claims; +using System.Threading.Tasks; + +namespace Timeline.Services.Mapper +{ + class GenericMapper : IGenericMapper + { + private readonly IServiceProvider _serviceProvider; + private readonly AutoMapper.IMapper _autoMapper; + + public GenericMapper(IServiceProvider serviceProvider, AutoMapper.IMapper autoMapper) + { + _serviceProvider = serviceProvider; + _autoMapper = autoMapper; + } + + public TDestination AutoMapperMap(object source) + { + return _autoMapper.Map(source); + } + + public async Task MapAsync(TSource source, IUrlHelper urlHelper, ClaimsPrincipal? user) + { + var mapper = _serviceProvider.GetService>(); + + if (mapper is not null) + { + return await mapper.MapAsync(source, urlHelper, user); + } + + return _autoMapper.Map(source); + } + } +} -- cgit v1.2.3