• AutoMapper


    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 名称匹配不区分大小写

    示例代码

    参考地址

  • 相关阅读:
    数据结构与算法——红黑树
    JAVA数据结构——Map之HashMap
    JAVA数据结构——集合之LinkedList
    在Mac OS X下让你的Terminal带上Color
    Git使用指南(一)
    《乔布斯传》摘录
    必应语音API(Bing text to speech API)
    《设计心理学2》 摘录
    《设计心理学1》 摘录
    第10组 Beta冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/wuyunblog/p/6626315.html
Copyright © 2020-2023  润新知