AutoMapper帮助类

     /// <summary>
     /// AutoMapper帮助类
     /// </summary>
     public static class AutoMapperHelper
     {
         /// <summary>
         ///  类型映射
         /// </summary>
         public static T MapTo<T>(this object obj)
         {
             if (obj == null) return default(T);

             var config = new MapperConfiguration(cfg => cfg.CreateMap(obj.GetType(), typeof(T)));
             var mapper = config.CreateMapper();
             return mapper.Map<T>(obj);
         }

         /// <summary>
         /// 集合列表类型映射
         /// </summary>
         public static List<TDestination> MapToList<TDestination>(this IEnumerable<TDestination> source)
         {
             Type sourceType = source.GetType().GetGenericArguments()[];  //获取枚举的成员类型
             var config = new MapperConfiguration(cfg => cfg.CreateMap(sourceType, typeof(TDestination)));
             var mapper = config.CreateMapper();

             return mapper.Map<List<TDestination>>(source);
         }

         /// <summary>
         /// 集合列表类型映射
         /// </summary>
         public static List<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
         {
             var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
             var mapper = config.CreateMapper();

             return mapper.Map<List<TDestination>>(source);
         }

         /// <summary>
         /// 类型映射
         /// </summary>
         public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination)
             where TSource : class
             where TDestination : class
         {
             if (source == null) return destination;

             var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
             var mapper = config.CreateMapper();
             return mapper.Map<TDestination>(source);
         }
     }

AutoMapFromAttribute

 public class AutoMapFromAttribute : AutoMapAttributeBase
     {
         public MemberList MemberList { get; set; }

         public AutoMapFromAttribute(params Type[] targetTypes)
             : base(targetTypes)
         {
         }

         public AutoMapFromAttribute(MemberList memberList, params Type[] targetTypes)
             : this(targetTypes)
         {
             this.MemberList = memberList;
         }

         public override void CreateMap(IMapperConfigurationExpression configuration, Type type)
         {
             )
                 return;
             foreach (Type targetType in this.TargetTypes)
                 configuration.CreateMap(targetType, type, MemberList.Destination);
         }
         public static bool IsNullOrEmpty<T>(ICollection<T> source)
         {
             if (source != null)
                 ;
             return true;
         }

     }

AutoMapAttributeBase

  public abstract class AutoMapAttributeBase : Attribute
     {
         public Type[] TargetTypes { get; private set; }

         protected AutoMapAttributeBase(params Type[] targetTypes)
         {
             this.TargetTypes = targetTypes;
         }
         public abstract void CreateMap(IMapperConfigurationExpression configuration, Type type);
     }

AutoMapper 帮助类的更多相关文章

  1. 使用 AutoMapper 映射 IDataReader、DataSet、DataTable 到实体类

    AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...

  2. AutoMapper随笔记

    平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html#skill 先看效果:(完整Demo:https://git ...

  3. AutoMapper简单用法

    首先在NuGet添加AutoMapper /// <summary> /// AutoMapper帮助类 /// </summary> public static class ...

  4. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  5. 升级AutoMapper后遇到的“Missing map”与“Missing type map configuration”问题

    前几天发现 AutoMapper 3.3 的一个性能问题(详见:遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍),于是将 AutoMapper 升级至最新的 5.1.1 看是否 ...

  6. AutoMapper中的Map和DynamicMap——高手注重细节,思考和总结

    近日在做项目的时候,遇到了个怪问题,关于AutoMapper的细节问题,也是不为一般人所关注的. 本人研究AutoMapper也没有多长时间,而且研究的过程中也写了关于AutoMapper的系列基础教 ...

  7. AutoMapper 使用总结

    初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字 ...

  8. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

    前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...

  9. Asp.Net AutoMapper用法

    1.AutoMapper简介 用于两个对象映射,例如把Model的属性值赋值给View Model.传统写法会一个一个属性的映射很麻烦,使用AutoMapper两句代码搞定. 2.AutoMapper ...

随机推荐

  1. vue-cli新建一个项目

    零.我想把项目安装在C:\www\Arup.DAH.ABCD\SourceCode\FrontEnd这个目录下,所以在我想安装的位置,Shift+右键-->powershell窗口,打开下图位置 ...

  2. 远景GIS云上线

    没有发布会.没有嘉宾.没有掌声,趁着国庆假期悄悄地将系统部署到服务器上线运行. 远景GIS云(RGIS Cloud)基于自主研发的远景GIS基础平台开发,目前已实现了Shape上传和导出.符号配置.动 ...

  3. Vue小案例(一)

    案例需求: 创建一个品牌展示表格,表头有编号(id),品牌名称(name),创建时间(time)和操作,需要实现的功能是对数据的增删操作,和时间的格式化. 思路分析:在开发之前需要想清楚要用到Vue中 ...

  4. java多线程处理问题

    今天碰到个以前的线上bug需要处理下:问题是这样的,我们的app里面有个点赞的功能,点赞完后显示点赞人列表以及点赞数量,但是数量现在总是不准确.之后查看代码,发现点赞时候只是简单的向数据库添加了一条点 ...

  5. Java基础之JSONObject的使用

    private static JSONObject createJSONObject() { JSONObject jsonObject = new JSONObject(); jsonObject. ...

  6. models的单表操作

    orm创建数据库 from django.db import models # Create your models here. class Book(models.Model): name = mo ...

  7. python----------闭包 、装饰器

    闭包: 就是内层函数对外层函数(非全局变量的)非全局变量的引用 def func(): name = '老人家' def func1(): print(name)#局部变量对全局变量的引用 因为并没有 ...

  8. [tools]excel转lua的python实现

    time:2015/04/13 描述:需要将excel表格内容转成lua,并且作为工具使用,能够批量转换 步骤: (1)文章[1]已经做了大部分的内容,而且也已经能够使用了 (2)根据自己新的需求: ...

  9. C指针和数组

    一.指针 指针就是地址,指针变量是用来存放地址的变量,把谁的地址存放在指针变量中,就说此指针变量指向谁. 二.数组 1.一维数组 一维数组名代表数组首元素的地址,因此 *a=a[0]; &:取 ...

  10. 计算机作业(Excel课程表) 物联网 王罗红