废话不多说扩展方法代码如下

  1 /// <summary>
  2     /// AutoMapper扩展
  3     /// </summary>
  4     public static class AutoMapperExtension
  5     {
  6         /// <summary>
  7         /// 类型映射
  8         /// </summary>
  9         /// <typeparam name="TDestination">映射后的对象</typeparam>
 10         /// <param name="obj">要映射的对象</param>
 11         /// <returns></returns>
 12         public static TDestination MapTo<TDestination>(this object obj) where TDestination : class
 13         {
 14             if (obj == null) return default(TDestination);
 15             var config = new MapperConfiguration(cfg => cfg.CreateMap<TDestination, object>());
 16             var mapper = config.CreateMapper();
 17             return mapper.Map<TDestination>(obj);
 18         }
 19 
 20         /// <summary>
 21         /// 集合列表类型映射
 22         /// </summary>
 23         /// <typeparam name="TDestination">目标对象类型</typeparam>
 24         /// <param name="source">数据源</param>
 25         /// <returns></returns>
 26         public static List<TDestination> MapTo<TDestination>(this IEnumerable<TDestination> source) where TDestination : class
 27         {
 28             if (source == null) return default(List<TDestination>);
 29 
 30             var config = new MapperConfiguration(cfg => cfg.CreateMap(source.GetType(), typeof(TDestination)));
 31             var mapper = config.CreateMapper();
 32             return mapper.Map<List<TDestination>>(source);
 33         }
 34 
 35         /// <summary>
 36         /// 集合列表类型映射
 37         /// </summary>
 38         /// <typeparam name="TSource">数据源类型</typeparam>
 39         /// <typeparam name="TDestination">目标对象类型</typeparam>
 40         /// <param name="source">数据源</param>
 41         /// <returns></returns>
 42         public static List<TDestination> MapTo<TSource, TDestination>(this IEnumerable<TSource> source)
 43             where TDestination : class
 44             where TSource : class
 45         {
 46             if (source == null) return new List<TDestination>();
 47 
 48             var config = new MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
 49             var mapper = config.CreateMapper();
 50             return mapper.Map<List<TDestination>>(source);
 51         }
 52 
 53         /// <summary>
 54         /// 集合列表类型映射
 55         /// </summary>
 56         /// <typeparam name="TSource">数据源类型</typeparam>
 57         /// <typeparam name="TDestination">目标对象类型</typeparam>
 58         /// <param name="source">数据源</param>
 59         /// <param name="configure">自定义配置</param>
 60         /// <returns></returns>
 61         public static List<TDestination> MapTo<TSource, TDestination>(this IEnumerable<TSource> source, Action<IMapperConfigurationExpression> configure)
 62             where TDestination : class
 63             where TSource : class
 64         {
 65             if (source == null) return new List<TDestination>();
 66 
 67             var config = new MapperConfiguration(configure);
 68             var mapper = config.CreateMapper();
 69             return mapper.Map<List<TDestination>>(source);
 70         }
 71 
 72         /// <summary>
 73         /// 类型映射
 74         /// </summary>
 75         /// <typeparam name="TSource">数据源类型</typeparam>
 76         /// <typeparam name="TDestination">目标对象类型</typeparam>
 77         /// <param name="source">数据源</param>
 78         /// <param name="destination">目标对象</param>
 79         /// <returns></returns>
 80         public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination)
 81             where TSource : class
 82             where TDestination : class
 83         {
 84             if (source == null) return destination;
 85 
 86             var config = new MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
 87             var mapper = config.CreateMapper();
 88             return mapper.Map<TSource, TDestination>(source, destination);
 89         }
 90 
 91         /// <summary>
 92         /// 类型映射,默认字段名字一一对应
 93         /// </summary>
 94         /// <typeparam name="TDestination">转化之后的model,可以理解为viewmodel</typeparam>
 95         /// <typeparam name="TSource">要被转化的实体,Entity</typeparam>
 96         /// <param name="source">可以使用这个扩展方法的类型,任何引用类型</param>
 97         /// <returns>转化之后的实体</returns>
 98         public static TDestination MapTo<TSource, TDestination>(this TSource source)
 99             where TDestination : class
100             where TSource : class
101         {
102             if (source == null) return default(TDestination);
103 
104             var config = new MapperConfiguration(cfg => cfg.CreateMap<TSource, TDestination>());
105             var mapper = config.CreateMapper();
106             return mapper.Map<TDestination>(source);
107         }
108 
109     }
View Code

相关文章:

  • 2021-09-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-23
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2021-05-30
  • 2021-12-09
相关资源
相似解决方案