博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EmitMapper的使用
阅读量:6092 次
发布时间:2019-06-20

本文共 2126 字,大约阅读时间需要 7 分钟。

转载:

EmitMapper是一个开源实体映射框架,地址:。

      EmitMapper映射效率比较高,接近硬编码。EmitMapper采用emit方式在运行时动态生成IL,而其他映射框架多是采用反射机制。此外EmitMapper最大限度地减少了拆箱装箱操作和映射过程中的额外的调用。
      EmitMapper支持.net的所有平台:Framework 3.5、Microsoft Silverlight 3、Mono。
 
      EmitMapper的使用非常简单,不需要指定任何的映射策略。系统会采用默认的映射配置器DefaultMapConfig完成映射操作。
 
//=>一、(默认映射配置器)属性名称一样的情况;类型可以不一样,但基元素类型转换可以进行ToString。(注意是属性名称是区分大小写)            //=》写法一            //ObjectsMapper
mapper = //ObjectMapperManager.DefaultInstance.GetMapper
(); //Dest dst = mapper.Map(src); //=》简写二 Dest dst = null; dst = ObjectMapperManager.DefaultInstance.GetMapper
().Map(src, dst); //=》二、自定义映射配置器 ObjectsMapper
mapper1 = new ObjectMapperManager().GetMapper
( new DefaultMapConfig() .IgnoreMembers
(new string[] { "A" }) .NullSubstitution
((value) => { return -1M; }) //如果不是语句块,则可以省略return;如果是加上return,则需要加上花括号 { return } //.NullSubstitution
((value) => -1M) .ConvertUsing
(value => new Inner2 { D12 = value.D1, D22 = value.D2 }) //.ConvertUsing
(value => { return new Inner2 { D12 = value.D1, D22 = value.D2 }; }) //=>方法体的写法 //.PostProcess
((value, state) => //{ // value.F = "nothing"; // value.A = 111; // return value; //}) //); //=>return的写法 //.PostProcess
((value, state) => //{ // return new Dest // { // F = "nothing", // A = 111, // }; //}) //.PostProcess
((value, state) => // new Dest // { // F = "noting", // A = 111, // }) //); .PostProcess
((Dest value, object state) => new Dest { F = "noting", A = 111, }) ); Dest dst1 = mapper1.Map(src); //=>其他 //=>委托写法 //EmitMapper.MappingConfiguration.MappingOperations.ValuesPostProcessor
ValuesPostProcessor1 = delegate(Dest dest1, object state) { return new Dest { }; }; EmitMapper.MappingConfiguration.MappingOperations.ValuesPostProcessor
ValuesPostProcessor2 = (d, s) => { return new Dest { }; };
View Code

EmitMapper的使用小结(很不错)

 

自己总结的Demo下载:

 

Customization using default configurator









你可能感兴趣的文章
Rainbond 5.1.4发布,复杂微服务架构整体升级和回滚
查看>>
Ubuntu 14.04 Apache 从 2.2 迁移至 2.4 重要提示
查看>>
字符串中重复出现的最长的子字符串【source:程序员面试宝典p238】
查看>>
Oracle之PL/SQL学习笔记之包
查看>>
Windows中的 PostgreSQL 9.5重置密码
查看>>
上班打酱油,用Eclipse看糗百
查看>>
Jquery工作常用实例——滑动切换(在隐藏与显示之间)被选元素
查看>>
学科教育视频和精品课
查看>>
java虚拟机JVM内存不够,OutOfMemorry Error
查看>>
Log4j
查看>>
React Redux Sever Rendering实战
查看>>
golang install on centos
查看>>
[iOS]tableView 一些技巧
查看>>
PostgreSQL用户角色及其属性介绍
查看>>
评分卡模型构建介绍
查看>>
UIButton防止重复点击的方式
查看>>
让Gitlab的CE版本,使用mysql数据库
查看>>
删除Sybase数据库设备
查看>>
Eclipse编译PostgreSQL 9.2.2
查看>>
Class字节码文件结构详解
查看>>