如何在 C# 中使用 AutoMapper
2022/6/23 5:19:54
本文主要是介绍如何在 C# 中使用 AutoMapper,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
译文链接: https://www.infoworld.com/art...
AutoMapper 是一个非常流行的 object-to-object 映射库,它的目的就是帮助你实现不同类型对象之间的映射,举一个例子,在 DDD 开发模式中,你可能需要实现将 DTO object 映射为 Model object,在过去,你需要人肉的将这两个类型下的属性字段进行一一映射,现在 AutoMapper 就可以帮你节省 这种冗余的模板式代码 匹配所耗费的时间。
开始玩 AutoMapper 之前,你需要在 Visual Studio 中创建一个 Project 并且安装 AutoMapper,你可以从 NuGet 上下载,也可以在 NuGet Package Manager Console
控制台输入如下命令:
PM> Install-Package AutoMapper
使用 AutoMapper 创建映射关系
像 AutoMapper 这样的 object-to-object 映射工具,它必须能够做到将一种输入类型转换成另一个输出类型,是不是很拗口,可以先考虑下面的两个类。
public class AuthorModel { public int Id { get; set; } public string FirstName { get;set; } public string LastName { get; set; } public string Address { get; set; } } public class AuthorDTO { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } }
接下来,下面的代码段将会告知你如何使用 AutoMapper 在 AuthorModel 和 AuthorDTO 这两个对象之间创建一个 mapping 关系。
var config = new MapperConfiguration(cfg => { cfg.CreateMap<AuthorModel, AuthorDTO>(); });
最终的 mapping 转换,你还需要增加几句下面的代码,实现两个类型之间的转换。
IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);
一个 AutoMapper 的例子
接下来可以上一些数据了,可以参考下面的代码片段,我准备先在 source object 上赋值,然后执行 AutoMapper 中的 Map 方法之后,在 destination object 上原样显示出来。
var config = new MapperConfiguration(cfg => { cfg.CreateMap<AuthorModel, AuthorDTO>(); }); IMapper iMapper = config.CreateMapper(); var source = new AuthorModel(); source.Id = 1; source.FirstName = "Joydip"; source.LastName = "Kanjilal"; source.Address = "India"; var destination = iMapper.Map<AuthorModel, AuthorDTO>(source); Console.WriteLine("Author Name: "+ destination.FirstName + " " + destination.LastName);
当你执行完这段代码之后,destination object 上的 Author Name 将会输出到控制台上,目标对象上的 FirstName 和 LastName 和 source object 上的这两个属性值保持一致,说明 automapper 已经帮你成功映射。
值得注意的是,AutoMapper 不仅仅可以 mapping 一个类,还可以 mapping 多个类,默认情况下,AutoMapper会按照默认约定匹配,也就是被mapping的对象之间具有相同的属性名称才能被成功映射,但现实情况下,很多被映射的属性名称是不相同的,这个时候就需要人工介入指定 mapping 关系让 AutoMapper 按照你设定的执行,假定你需要实现 Contact 到 ContactDetails 之间的映射,下面的例子展示了如何去实现这种关系。
var config = new MapperConfiguration(cfg => { cfg.CreateMap<AuthorModel, AuthorDTO>() .ForMember(destination => destination.ContactDetails, opts => opts.MapFrom(source => source.Contact)); });
下面的语句可以创建最终的 destination object 对象。
var destination = iMapper.Map<AuthorModel, AuthorDTO>(source);
有时候你已经生成了 destination object,在这基础上你还想二次映射,这时可以使用下面替代语句。
iMapper.Map(sourceObject, destinationObject);
本质上来说,上面的这段代码常用于匹配两个已存在的 object。
使用 AutoMapping 的 projections 功能
AutoMapper 提供了非常好的 projections 功能,projections
这篇关于如何在 C# 中使用 AutoMapper的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#