|
|
|
|
using AutoMapper;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace zzz.Common.Helper
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// AutoMapper扩展类
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static class AutoMapperExtension
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对象映射
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static TOut MapTo<TIn, TOut>(this TIn source)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return default(TOut);
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.CreateMap<TIn, TOut>());
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map<TOut>(source);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对象映射(自定义)
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static TOut MapTo<TIn, TOut>(this TIn source, Profile profile)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return default(TOut);
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.AddProfile(profile));
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map<TOut>(source);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对象映射到目标对象
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static TOut MapTo<TIn, TOut>(this TIn source,TOut destination)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return default(TOut);
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.CreateMap<TIn, TOut>());
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map(source, destination);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 对象映射(自定义)到目标对象
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static TOut MapTo<TIn, TOut>(this TIn source, TOut destination, Profile profile)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return default(TOut);
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.AddProfile(profile));
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map(source, destination);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 集合映射
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="TSource"></typeparam>
|
|
|
|
|
/// <typeparam name="TDestination"></typeparam>
|
|
|
|
|
/// <param name="source"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IEnumerable<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return new List<TDestination>();
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map<List<TDestination>>(source);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 集合映射(自定义)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <typeparam name="TSource"></typeparam>
|
|
|
|
|
/// <typeparam name="TDestination"></typeparam>
|
|
|
|
|
/// <param name="source"></param>
|
|
|
|
|
/// <param name="profile"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IEnumerable<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source, Profile profile)
|
|
|
|
|
{
|
|
|
|
|
if (source == null) return new List<TDestination>();
|
|
|
|
|
|
|
|
|
|
var config = new MapperConfiguration(cfg => cfg.AddProfile(profile));
|
|
|
|
|
var mapper = config.CreateMapper();
|
|
|
|
|
return mapper.Map<List<TDestination>>(source);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|