AutoMapper随笔记

平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html#skill

先看效果:(完整Demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/05.AutoMapper)

原来是这么干的:

有了AutoMapper是这么干的:

————————————————————

1.AutoMapper初始化

2.配置文件

3.对象映射配置(ConstructUsingForMember 用的比较多)

扩展类:

完整Demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/05.AutoMapper

把扩展类贴一下吧:

/// <summary>
   /// AutoMapper扩展类
   /// </summary>
   public static class AutoMapperExt
   {
       #region 由AutoMapper创建目标对象
       /// <summary>
       ///  类型映射-由AutoMapper创建目标对象
       /// </summary>
       public static T MapTo<T>(this object obj)
       {
           if (obj == null) return default(T);
           return Mapper.Map<T>(obj);
       }
 
       /// <summary>
       /// 集合列表类型映射-由AutoMapper创建目标对象
       /// </summary>
       public static IEnumerable<TDestination> MapToList<TDestination>(this IEnumerable source)
       {
           if (source == null) return new List<TDestination>();
           return Mapper.Map<IEnumerable<TDestination>>(source);
       }
       #endregion
 
       #region 把源对象中的属性值合并/覆盖到目标对象
       /// <summary>
       /// 类型映射-把源对象中的属性值合并/覆盖到目标对象
       /// </summary>
       public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination) where TSource : class where TDestination : class
       {
           if (source == null) return destination;
           return Mapper.Map(source, destination);
       }
 
       /// <summary>
       /// 集合列表类型映射-把源对象中的属性值合并/覆盖到目标对象
       /// </summary>
       public static IEnumerable<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source, IEnumerable<TDestination> destination)
       {
           return Mapper.Map(source, destination);
       }
       #endregion
 
       #region DataReader映射
       /// <summary>
       /// DataReader映射
       /// </summary>
       public static IEnumerable<T> DataReaderMapTo<T>(this System.Data.IDataReader reader)
       {
           Mapper.Initialize(cfg => cfg.CreateMap<System.Data.IDataReader, IEnumerable<T>>());
           return Mapper.Map<System.Data.IDataReader, IEnumerable<T>>(reader);
       }
       #endregion
   }

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2016-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博客园

Core官方DI解析(4)--CallSiteRuntimeResolver

​ CallSiteRuntimeResolver类型是一个创建或获取服务实例的类型,这个类型继承了CallSiteVisitor<TArgument, TRe...

10810
来自专栏10km的专栏

java nio:Files.isSameFile判断两个路径(Path)是否相等

不论在windows还是linux下,仅凭字符串比较判断两个文件路径是否相等是不靠谱的。因为有link,Disk map等技术的存在,两个不同的路径有可能指向同...

23860
来自专栏Java与Android技术栈

Scala学习笔记(四) 类的初步Scala 类相关总结

终于来到面向对象的地方了,虽说函数式编程是 Scala 的特性,让人们觉得 Scala 是更好的 Java。但是在架构层面上一直提倡着:小处用函数式编程,大处用...

12120
来自专栏程序生活

Pandas GroupBy的使用

在许多情况下,我们将数据分成几组,并在每个子集上应用一些功能。在应用中,我们可以执行以下操作:

68140
来自专栏王硕

原 PostgreSQL的系统函数分析记录

19830
来自专栏码匠的流水账

聊聊GenericObjectPool的泄露检测

本文主要聊聊GenericObjectPool的abandon参数。主要用来做连接池的泄露检测用。

19720
来自专栏我杨某人的青春满是悔恨

深入理解 weak-strong dance

这时handler持有 Block 对象,而 Block 对象虽然捕获了weakSelf,延长了weakSelf这个局部变量的生命周期,但weakSelf是附有...

14140
来自专栏闵开慧

pig操作与注意事项

grunt> A = load 'hdfs://192.168.0.118:9000/user/hadoop/data.txt' as (name:charar...

29330
来自专栏小小挖掘机

来学习几个简单的Hive函数啦

咳咳,今天来介绍一下几个Hive函数吧,先放一张我登哥划水的照片,希望大家也做一只自由的鱼儿,在知识的海洋里游呀游,嘻嘻! ? 今天我们来介绍几个Hive常用的...

48240
来自专栏Android开发实战

设计模式-单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。

9530

扫码关注云+社区

领取腾讯云代金券