前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 使用Automapper映射 Record类型

.NET 使用Automapper映射 Record类型

作者头像
郑子铭
发布2023-08-30 10:22:37
2050
发布2023-08-30 10:22:37
举报

前言

当使用Automapper进行对象映射时,通常我们会使用POCO(Plain Old CLR Object)类作为源对象和目标对象。然而,自从C# 9引入了record类型,它们提供了更简洁、不可变的对象模型。

我已经将项目的所有Dto都是用record类型,但是record类型还是有些需要注意的点,本文将介绍如何使用Automapper将POCO映射成record的对象。

正文

首先,我们需要确保已经安装了Automapper NuGet包。可以通过NuGet包管理器控制台或者Visual Studio的NuGet包管理器来安装

代码语言:javascript
复制
//安装Nuget包
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

//服务注册
builder.Services.AddAutoMapper(assembly);  //你的程序集

安装完成后,我们可以在项目中引入Automapper的命名空间,以便在代码中使用Automapper相关的功能。

接下来,假设我们有一个POCO类Person,具有以下属性:

代码语言:javascript
复制
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

现在,我们希望将这个POCO类映射成一个record类型的对象PersonRecord,具有相同的属性:

代码语言:javascript
复制
public record PersonRecord(string FirstName, string LastName, int Age);

在使用Automapper之前,我们需要进行一些配置。可以在应用程序的启动代码或启动器类中进行配置。以下是一个简单的配置示例:

代码语言:javascript
复制
public class PersonProfile : Profile
{
    public PersonProfile()
    {
        CreateMap<Person, PersonRecord>();
    }
}

在上面的代码中,我们创建了一个PersonProfile类,并使用CreateMap方法来定义从Person到PersonRecord的映射。

现在,我们可以使用mapper对象来执行映射操作了。只需调用mapper.Map方法并传入源对象即可:

代码语言:javascript
复制
public class AutomapperController : ControllerBase
{
    private readonly IMapper _mapper;

    public AutomapperController(IMapper mapper)
    {
        _mapper = mapper;
    }

    [HttpGet]
    public IActionResult Get()
    {
        Person person = new()
        {
            FirstName = "John",
            LastName = "Doe",
            Age = 30
        };

        PersonRecord personRecord = _mapper.Map<PersonRecord>(person);
        return Ok(personRecord);
    }
}

通过上面的代码,我们就将Person对象映射成了PersonRecord对象。personRecord对象将具有与person相同的属性值。

值得注意的是,由于record是不可变的,因此我们只能在创建时初始化其属性,无法在后续代码中修改属性值。因此,在映射过程中,Automapper会自动为record类型的目标对象生成一个构造函数,并根据源对象的属性值进行初始化。

使用Automapper进行POCO到record的映射还可以处理复杂的场景,包括嵌套对象、集合类型等。只需在配置过程中定义适当的映射规则,Automapper会自动处理属性的映射。

总结

我们了解了使用Automapper将POCO映射成record的对象的步骤。

首先,我们需要安装和配置Automapper,然后定义映射规则。

最后,在需要进行映射的地方调用mapper.Map方法即可。

这样,我们可以轻松地将POCO对象转换为不可变的record对象。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档