.netcore3.1——应用AutoMapper
2024-09-03 07:46:25
多层架构中存在多种模型,如视图模型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
最新文章
- Uva 1630 折叠串
- NLP学术组织、会与论文
- iOS 蓝牙开发(三)app作为外设被连接的实现(转)
- 关于JQuery设置checkbox checked 的问题
- android技巧(二)listview的优化
- vector用法总结(转载)
- 在Qt中使用AnyCAD三维建模控件
- OutputStream窥探
- #define使用方法
- (转载)用css来实现十字的布局
- 第三章 PL/SQL编程
- 在CentOS6上利用PXE+Kickstart+Apache+DHCP实现无人值守安装
- 【集合】Java集合框架
- 第四次作业之oop
- OneZero——Review报告会
- 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
- nginx内置变量 大全
- javascript 链式写法
- Windows环境下python的安装与使用
- Config程序配置文件操作实践进阶之ConfigurationSectionGroup