📅  最后修改于: 2023-12-03 15:21:51.573000             🧑  作者: Mango
在开发过程中,经常需要将一个对象映射成另一个对象。这项任务可以使用各种框架和库来完成,如 AutoMapper、Dozer、ModelMapper 等。
在本文中,我们将介绍如何使用 C# 中比较基础的语言特性和代码模式,来实现一个简单的对象映射功能,仅映射三个对象。
我们将使用下面的对象作为目标对象:
public class EmployeeDTO
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
我们将把下面的对象映射为目标对象:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public bool IsActive { get; set; }
}
我们将创建一个映射器类,用于将源对象映射为目标对象:
public static class EmployeeMapper
{
public static EmployeeDTO Map(Employee employee)
{
if (employee == null)
{
return null;
}
return new EmployeeDTO
{
EmployeeId = employee.Id,
FirstName = employee.FirstName,
LastName = employee.LastName,
Email = employee.Email
};
}
}
以上代码中的 Map 方法接收一个 Employee 对象作为参数,返回一个 EmployeeDTO 对象。如果传入的 Employee 对象为 null,返回 null。否则,将 Employee 对象的属性值映射到 EmployeeDTO 对象的对应属性中,并返回结果。
我们将使用下面的代码来测试映射器:
Employee employee = new Employee
{
Id = 1,
FirstName = "John",
LastName = "Doe",
Email = "john.doe@example.com",
IsActive = true
};
EmployeeDTO employeeDTO = EmployeeMapper.Map(employee);
Console.WriteLine($"EmployeeId: {employeeDTO.EmployeeId}");
Console.WriteLine($"FirstName: {employeeDTO.FirstName}");
Console.WriteLine($"LastName: {employeeDTO.LastName}");
Console.WriteLine($"Email: {employeeDTO.Email}");
以上代码将创建一个 Employee 对象,并调用 EmployeeMapper.Map 方法将其映射为 EmployeeDTO 对象,并输出 EmployeeDTO 对象的属性值。运行代码,输出结果如下:
EmployeeId: 1
FirstName: John
LastName: Doe
Email: john.doe@example.com
本文介绍了如何使用 C# 中比较基础的语言特性和代码模式,实现一个简单的对象映射功能,仅映射三个对象。这种实现方式可能并不够灵活和强大,但适用于简单的映射需求,同时具备代码简洁、易于理解和维护等优点。