C# AutoMapper 使用方法总结
什么是AutoMapper
AutoMapper 是一个能够自动将对象中属性映射到另一个对象的属性的开源库。
例如,你可能有一个 Domain 对象,这个对象拥有很多属性。而在你的应用程序的某些位置,你需要传递该对象到 MVC 模型或表示图形,而这个位置需要该 Domain 对象中仅一部分属性。AutoMapper 就是把 Domain 对象中你想要的属性打包到 DTO 或 MVC 模型中的最简便方法。
安装AutoMapper
PM> Install-Package AutoMapper
通过 NuGet 包管理器,你就可以轻松安装 AutoMapper。
如何使用AutoMapper
首先,添加一个新的 .cs 文件,在其中声明一个类,在该类中创建一个静态方法进行 AutoMapper 映射,如下所示:
using AutoMapper;
public class AutoMapperConfig
{
public static void Initialize()
{
Mapper.Initialize(cfg =>
{
// 配置映射规则
});
}
}
然后在 Global.asax 中调用 AutoMapperConfig.Initialize()
来初始化 AutoMapper。
在 cfg =>
中可以配置映射规则,如下所示:
cfg.CreateMap<Source, Destination>();
// 或者使用 ReverseMap() 进行双向映射
cfg.CreateMap<Source, Destination>().ReverseMap();
// 可以映射集合对象
cfg.CreateMap<List<Source>, List<Destination>>();
// 可以自定义转换规则
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.FullName, opt => opt.MapFrom(src => string.Format("{0} {1}", src.FirstName, src.LastName)));
示例说明
示例 1:
定义两个类:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
public class EmployeeDto
{
public int Id { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
定义映射规则:
cfg.CreateMap<Employee, EmployeeDto>().ForMember(dest => dest.FullName,
opt =>
opt.MapFrom(src => string.Format("{0} {1}", src.FirstName, src.LastName)));
使用 AutoMapper 进行映射:
var employee = new Employee { Id = 1, FirstName = "Tony", LastName = "Stark", Age = 40, Gender = "Male" };
var employeeDto = Mapper.Map<EmployeeDto>(employee);
结果为:
// employeeDto 值
{
Id = 1,
FullName = "Tony Stark",
Age = 40,
Gender = "Male"
}
示例 2:
定义以下两个类:
public class Order
{
public int Id { get; set; }
public decimal Amount { get; set; }
public DateTime OrderDate { get; set; }
public string CustomerName { get; set; }
}
public class OrderDto
{
public int Id { get; set; }
public decimal OrderTotal { get; set; }
public DateTime OrderDate { get; set; }
public string CustomerName { get; set; }
}
定义映射规则:
cfg.CreateMap<Order, OrderDto>().ForMember(dest => dest.OrderTotal, opt => opt.MapFrom(src => src.Amount));
进行映射:
var order = new Order { Id = 1, Amount = 100m, OrderDate = DateTime.Now, CustomerName = "Tom" };
var orderDto = Mapper.Map<OrderDto>(order);
结果为:
// orderDto 的值
{
Id = 1,
OrderTotal = 100.0,
OrderDate = '2018/11/3',
CustomerName = "Tom"
}
总结
以上就是 C# AutoMapper 的基础使用方法,它能够帮助我们减少追踪映射代码的时间并帮助我们更好地保持代码的整洁。如果你想要了解更多关于 AutoMapper 的用法,可以访问 AutoMapper 的 官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# AutoMapper 使用方法总结 - Python技术站