automapper自动创建映射_.NetCore学习笔记:四、AutoMapper对象映射
什么是automapper?
automapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码。这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来为我们做?
我们来看看在.netcore3.1中怎样使用automapper9.0。
1 public class basicprofile : profile, iprofile
2 {
3 public basicprofile()
4 {
5 createmap();
6 createmap();
7 }
8 }
profile提供了一个命名的映射类,所有继承自profile类的子类都是一个映射集合。这里我创建了一个basicprofile继承profile类。
createmap创建映射规则。
iprofile创建影射类的约束,表示继承自该接口的类为映射集合。
由于automapper9.0中取消了自动创建影射规则的方法这里我们需要自己写一个:
1 public static class servicecollectionextensions
2 {
3 ///
4 /// 自动创建映射
5 ///
6 ///
7 public static void addautomapper(this iservicecollection services)
8 {
9 var allprofile = directory.getfiles(appdomain.currentdomain.basedirectory, "*.dll").select(assembly.loadfrom)
10 .selectmany(y => y.definedtypes)
11 .where(p => p.getinterfaces().contains(typeof(iprofile)))
12 .toarray();
13 services.addautomapper(allprofile);
14 }
15 }
添加到configureservices:
1 public void configureservices(iservicecollection services)
2 {
3 //自动创建映射
4 services.addautomapper();
5 }
这样automapper就配置完成,但为了方便调用,我们继续写几个扩展:
1 public static class automapperapplicationbuilderextensions
2 {
3 private static iserviceprovider _serviceprovider;
4 public static void usestateautomapper(this iapplicationbuilder applicationbuilder)
5 {
6 _serviceprovider = applicationbuilder.applicationservices;
7 }
8
9 public static tdestination map(object source)
10 {
11 var mapper = _serviceprovider.getrequiredservice();
12 return mapper.map(source);
13 }
14
15 public static tdestination map(tsource source)
16 {
17 var mapper = _serviceprovider.getrequiredservice();
18
19 return mapper.map(source);
20 }
21
22 public static tdestination mapto(this tsource source)
23 {
24 var mapper = _serviceprovider.getrequiredservice();
25 return mapper.map(source);
26 }
27
28 public static tdestination mapto(this object source)
29 {
30 var mapper = _serviceprovider.getrequiredservice();
31 return mapper.map(source);
32 }
33
34 public static list maptolist(this ienumerable source)
35 {
36 var mapper = _serviceprovider.getrequiredservice();
37 return mapper.map>(source);
38 }
39
40 public static list maptolist(this ienumerable source)
41 {
42 var mapper = _serviceprovider.getrequiredservice();
43 return mapper.map>(source);
44 }
45 }
添加到configure:
1 public void configure(iapplicationbuilder app, iwebhostenvironment env)
2 {
3 app.usestateautomapper();
4 }
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
automapper自动创建映射_.NetCore学习笔记:四、AutoMapper对象映射相关推荐
- Castle ActiveRecord学习笔记四:各种映射
这里主要来说明ActiveRecord的属性与数据库及其字段的对应关系. 主要以ActiveRecordAttribute.PrimaryKeyAttribute.PropertyAttribute来 ...
- mysql存储引擎处理_[MySql学习笔记] 四 存储引擎事务处理
MySql有一个重要的特征,被称为Pluggable Storage Engine Architecture(可替换存储引擎构架).有两个重要的存储引擎:MyISAM 和 InnoDB .其中MyIS ...
- python中seaborn库_[Python学习笔记(四)] Seaborn库基础学习——01
用 matplotlib能够完成一些基本的图表操作,而 Seaborn 库可以让这些图的表现更加丰富. 1. import seaborn as sns 用于导入 seaborn 库,并取别名为 sn ...
- java 矩阵分解_矩阵论学习笔记四:矩阵分解 | 学步园
参考书:<矩阵论>第3版,程云鹏 张凯院 徐仲编著 西北工业大学出版社 矩阵的三角分解和QR分解等在计算数学中都扮演着十分重要的角色,尤其是以QR分解所建立的QR方法,以对数值线性代数理论 ...
- 初探swift语言的学习笔记四(类对象,函数)
2019独角兽企业重金招聘Python工程师标准>>> swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱 ...
- Java中如何创建自定义的注解学习笔记(MD版)
概要 Java中如何创建自定义的注解学习笔记(MD版). 博客 博客地址:IT老兵驿站. 前言 记得这篇笔记还是在泉州的龙玲酒店记录的,是一个周六的晚上,坐飞机从上海到泉州,从笔记中能勾起一些旅游的回 ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
- mysql新增表字段回滚_MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- python学习笔记4(对象/引用;多范式; 上下文管理器)
python学习笔记4(对象/引用:多范式; 上下文管理器) ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是 ...
最新文章
- 12-CoreData操作大量数据时的注意细节
- One order search dynamic SQL build logic
- Javascript 调试技巧
- 第 5-7 课:Java 中的各种锁和 CAS + 面试题
- mysql geometry 附近的人_mysql中geometry类型的简单使用(搜索附近的人)
- php 模型 关联,PHP模型关联一对多如何给关联表加条件?
- Reading Club·Beijing第1期DeepQA框架与Siri架构会场笔记(PPT下载)
- python连接mongodb的库文件pymongo
- pc计算机怎么设置域名管理,如何设置域名的DNS服务器 -电脑资料
- Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招
- Linux内核部件分析 连通世界的list
- SQL server 数据导入导出BCP工具使用详解
- sendip linux发包工具
- 偏最小二乘法(NIPALS经典实现--未简化)
- pandas 错误 ValueError: ‘Lengths must match to compare‘
- arm mali 天梯图_手机CPU天梯图2017年上半年新版 2017手机cpu性能排行天梯图
- akka kafka java_Jay Kreps谈基于Apache Kafka和Kafka Streams的分布式流处理
- Ansible自动化运维工具安装及使用
- 常微分方程的差分方法C语言,常微分方程差分方法.ppt
- 有道云笔记 协作android版,有道云笔记Android版升级_软件资讯软件快报-中关村在线...