AutoMapper
- 1.介绍
- 2.基本映射规则
- 3.类型转换
- 4.自定义解析
- 5.条件映射
- 6.全局配置
1.介绍
AutoMapper是一种对象映射工具,它通过一些规则映实现源对象射到目标对象的映射。
常用于Model层到ViewModel的转换!
2.基本映射规则
2.1 规则描述
- 名称相同的属性进行映射,且不区分大小写
- 带Get前缀的方法进行映射;示例:GetTotal->Total的映射
- 类和属性的组合映射;示例: 属性Goods(类型GoodsModel中Name)->GoodsName
2.2 示例
2.2.1下面简单演示Model->ViewModel的映射
/*------------------------源对象----------------------------*/
public class OrderModel
{
public string OrderNo{set;get;}
public GoodsModel Goods{set;get;}
public int GetTotal{set;get;}
public decimal Price{set;get;}
}
public class GoodsModel
{
public string Name { set; get; }
}
/*------------------------目标对象----------------------------*/
public class OrderViewModel
{
public string OrderNo{set;get;}
public string GoodsName{set;get;}
public int Total{set;get;}
public string Price{set;get;}
}
/*--------------------源对象->目标对象-------------------------*/
[TestMethod]
public void FlatteningTest()
{
//初始化映射
Mapper.Initialize(cfg => cfg.CreateMap<OrderModel, OrderViewModel>());
//初始化源对象
var src = new OrderModel
{
OrderNo="订单号1",
Goods=new GoodsModel { Name="牛奶"},
GetTotal=1000,
Price=12.30M
};
//进行映射
OrderViewModel dest = Mapper.Map<OrderModel, OrderViewModel>(src);
//结果比对
Assert.AreEqual("订单号1",dest.OrderNo); //验证通过
Assert.AreEqual("牛奶",dest.GoodsName); //验证通过
Assert.AreEqual(1000,dest.Total); //验证通过
Assert.AreEqual("12.30",dest.Price); //验证通过
}
2.2.2映射说明
OrderModel中属性 | OrderViewModel的属性 | 说明 |
---|---|---|
OrderNo | OrderNo | 名称匹配 |
Goods(类GoodsModel中的Name) | GoodsName | 类和属性的组合映射 |
GetTotal | Total | Get[XX]到[XX]的映射 |
Price | price | 名称匹配不区分大小写 |