zoukankan      html  css  js  c++  java
  • 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 名称匹配不区分大小写

    示例代码

    参考地址

  • 相关阅读:
    valgrind使用手册
    [转]windows server 2008 多用户远程登录设置
    ios控件学习 IB实现
    把java变成exe
    python 函数 值传递
    java 经验
    python list 去除重复
    xcode 4.2 基础
    mac 使用
    object c 基础语法
  • 原文地址:https://www.cnblogs.com/wuyunblog/p/6626315.html
Copyright © 2011-2022 走看看