Automapper - 多对象源和一个目标

c++

1个回答

写回答

18634324654

2025-06-15 02:25

+ 关注

Automapper - 多对象源和一个目标

Automapper是一个流行的.NET库,它允许开发人员轻松地在不同的对象之间进行映射。这对于在应用程序中处理多个对象源和一个目标对象时非常有用。在本文中,我们将探讨如何使用Automapper进行多对象源和一个目标的映射,并提供一个案例代码来说明其用法。

案例代码

假设我们有两个对象源:Person和Employee。Person对象有一个Name属性,而Employee对象有一个Salary属性。我们想要将这两个对象源映射到一个目标对象EmployeeDTO。EmployeeDTO对象也有一个Name属性和一个Salary属性,我们希望将Person对象的Name属性映射到EmployeeDTO的Name属性,将Employee对象的Salary属性映射到EmployeeDTO的Salary属性。

首先,我们需要在项目中安装Automapper库。可以通过NuGet包管理器控制台或Visual Studio的NuGet包管理器来完成此操作。

安装完成后,我们需要在应用程序的启动文件中进行配置。在这个例子中,我们将使用Global.asax文件。

csharp

using AutoMapper;

protected void Application_Start()

{

Mapper.Initialize(cfg => {

cfg.CreateMap<Person, EmployeeDTO>()

.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name));

cfg.CreateMap<Employee, EmployeeDTO>()

.ForMember(dest => dest.Salary, opt => opt.MapFrom(src => src.Salary));

});

}

以上代码会在应用程序启动时初始化Automapper,并创建了从Person到EmployeeDTO的映射和从Employee到EmployeeDTO的映射。我们使用了CreateMap方法来定义映射规则,并使用ForMember方法来指定源属性和目标属性之间的映射关系。

接下来,我们可以在需要映射的地方使用Automapper。在我们的例子中,我们将在一个Web API的控制器中进行映射。

csharp

public class EmployeeController : ApiController

{

private IMapper _mapper;

public EmployeeController(IMapper mapper)

{

_mapper = mapper;

}

public EmployeeDTO GetEmployee()

{

var person = new Person { Name = "John" };

var employee = new Employee { Salary = 5000 };

var employeeDTO = _mapper.Map<EmployeeDTO>(person);

_mapper.Map(employee, employeeDTO);

return employeeDTO;

}

}

在上面的代码中,我们首先创建了一个Person对象和一个Employee对象。然后,我们使用_mapper对象的Map方法将Person对象映射到EmployeeDTO对象。接着,我们使用Map方法将Employee对象映射到已经映射过Person对象的EmployeeDTO对象。最后,我们返回映射后的EmployeeDTO对象。

Automapper是一个强大的工具,可以简化多对象源和一个目标对象之间的映射。通过定义映射规则并使用Automapper的Map方法,开发人员可以轻松地将属性从一个对象映射到另一个对象。在本文中,我们介绍了如何配置Automapper,并提供了一个案例代码来演示其用法。希望这篇文章对理解和使用Automapper有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号