多层架构中存在多种模型,如视图模型ViewModel,数据传输对你DTO,ORM对象等,这些数据在层与层之间进行传输必须涉及类型之间的转换。

AutoMapper是一个对象-对象映射器,作用是通过设置好的映射规则把一个对象转化为另一个对象,避免每次都去手动写转换代码。

AutoMapper仅是其中一种方式,现在类似的组件多的多,简单点的自己也可以写,用顺手了哪家都OK。

使用:

1、Nuget引用:

2、ConfigureServices中进行服务注册(程序集方式):

1 //添加AutoMapper
2 services.AddAutoMapper(typeof(StartupHelp.MapperProfiles).Assembly);

StartupHelp.MapperProfiles就是要注册的类型所在程序集

3、配置映射规则:

1     public class MapperProfiles : AutoMapper.Profile
2 {
3 public MapperProfiles()
4 {
5 CreateMap<Manager, ManagerModel>().ReverseMap();
6 }
7 }

这里是最简单的映射规则,还可以针对属性不匹配或者其他情况进行映射规则处理

4、使用:

 1     public class ManagerService : IManagerService
2 {
3 private readonly IManagerRepository _repository;
4 private readonly IMapper _mapper;
5
6 public ManagerService(IManagerRepository repository, IMapper mapper)
7 {
8 this._repository = repository;
9 this._mapper = mapper;
10 }
11
12 public async Task<ManagerModel> GetManagerAsync(string username)
13 {
14 var obj = await _repository.GetManager(username);
15 return _mapper.Map<ManagerModel>(obj);
16 }
17 }

这里用到了构造函数注入,_mapper.Map<ManagerModel>(obj); 一句话即可实现对象之间的转换。

官方Github地址:https://github.com/AutoMapper/AutoMapper

官方文档(英文):https://automapper.readthedocs.io/en/latest/Getting-started.html

最新文章

  1. Uva 1630 折叠串
  2. NLP学术组织、会与论文
  3. iOS 蓝牙开发(三)app作为外设被连接的实现(转)
  4. 关于JQuery设置checkbox checked 的问题
  5. android技巧(二)listview的优化
  6. vector用法总结(转载)
  7. 在Qt中使用AnyCAD三维建模控件
  8. OutputStream窥探
  9. #define使用方法
  10. (转载)用css来实现十字的布局
  11. 第三章 PL/SQL编程
  12. 在CentOS6上利用PXE+Kickstart+Apache+DHCP实现无人值守安装
  13. 【集合】Java集合框架
  14. 第四次作业之oop
  15. OneZero——Review报告会
  16. 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
  17. nginx内置变量 大全
  18. javascript 链式写法
  19. Windows环境下python的安装与使用
  20. Config程序配置文件操作实践进阶之ConfigurationSectionGroup

热门文章

  1. 【初等数论】费马小定理&amp;欧拉定理&amp;扩展欧拉定理(暂不含证明)
  2. Mybatis【1】-- 第一个Mybatis程序
  3. A:与指定数字相同的数的个数
  4. Hybrid接口应用
  5. Java安全之JNI绕过RASP
  6. Django的静态文件的配置
  7. 冲刺随笔——Day_Two
  8. gradle插件版本号和Gradle版本号对应关系
  9. Fiddler 4 对app接口抓取
  10. moviepy音视频剪辑VideoClip类to_mask方法、to_RGB、afx方法