aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services/Mapper/GenericMapper.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-04-28 19:20:40 +0800
committercrupest <crupest@outlook.com>2021-04-28 19:20:40 +0800
commite16c958e5ba47834dc1624e09ed8e5074a60d1c6 (patch)
treeaf8de5669e0ade7d1425d7c5599d438a6cf1c38c /BackEnd/Timeline/Services/Mapper/GenericMapper.cs
parent29453339a7ba744dc19f730ffbd71d6bff01f25b (diff)
downloadtimeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.gz
timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.tar.bz2
timeline-e16c958e5ba47834dc1624e09ed8e5074a60d1c6.zip
refator: ...
Diffstat (limited to 'BackEnd/Timeline/Services/Mapper/GenericMapper.cs')
-rw-r--r--BackEnd/Timeline/Services/Mapper/GenericMapper.cs37
1 files changed, 37 insertions, 0 deletions
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<TDestination>(object source)
+ {
+ return _autoMapper.Map<TDestination>(source);
+ }
+
+ public async Task<TDestination> MapAsync<TSource, TDestination>(TSource source, IUrlHelper urlHelper, ClaimsPrincipal? user)
+ {
+ var mapper = _serviceProvider.GetService<IMapper<TSource, TDestination>>();
+
+ if (mapper is not null)
+ {
+ return await mapper.MapAsync(source, urlHelper, user);
+ }
+
+ return _autoMapper.Map<TSource, TDestination>(source);
+ }
+ }
+}