C# AutoMapper 使用方法总结

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技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • .NET反向代理组件YARP介绍

    以下是“.NET反向代理组件YARP介绍”的完整攻略: 什么是YARP YARP(Yet Another Reverse Proxy)是一个开源的反向代理组件由微软开发。它是一个轻量级、高性能、可扩展的反向代理组件,可以用于构建高性能的服务网关、API网关等。 YARP的特性 YARP具有以下特性: 支持HTTP、HTTPS、WebSocket等协议 支持负…

    C# 2023年5月12日
    00
  • C#中Arraylist的sort函数用法实例分析

    C#中ArrayList的Sort函数用法实例分析 简介 C#中的 ArrayList 是一个动态数组,可以动态地增加或删除数组的元素,不需要提前设置数组的大小。同时,ArrayList 还提供了 Sort 方法来进行元素的排序。Sort 方法是利用快排来完成排序操作的。接下来,我们将详细讲解 C# 中 ArrayList 的 Sort 函数的使用方法。 S…

    C# 2023年6月7日
    00
  • C#导出Excel的示例详解

    C#导出Excel的示例详解 介绍 在实际的项目中,我们经常需要将数据导出到Excel表格中,以方便查阅和管理。C#作为一门强大的编程语言,在导出Excel方面也有非常不错的表现。本篇文章将详细讲解如何使用C#导出Excel表格。 准备工作 我们需要使用C#自带的OpenXML库来实现Excel的导出。在使用前,需要进行一些准备工作: 引入DocumentF…

    C# 2023年6月7日
    00
  • C#实现的封装CURD到SqlHelper类用法简单分析

    让我来为您详细讲解“C#实现的封装CURD到SqlHelper类用法简单分析”的完整攻略。 1. 什么是CURD操作? CURD是数据库中的四种操作,包括新增(Create)、查询(Retrieve)、修改(Update)、删除(Delete)。在实际的应用场景中,我们经常需要对数据库进行这四种操作。 2. 什么是SqlHelper类? SqlHelper是…

    C# 2023年5月15日
    00
  • 详解.Net中字符串不变性与相等判断的特殊场景

    针对.Net中字符串不变性与相等判断的特殊场景,我们需要从以下几个方面进行讲解: 字符串不变性的概念与原理 字符串相等判断的常规方法 特殊场景下的字符串相等判断问题及解决方法 1. 字符串不变性的概念与原理 在 .Net 中,为了追求运行效率和确保字符串的安全性,字符串被设计为不可变对象,即字符串一旦被创建之后,不能被修改。基于这种不可变的特性,字符串在被使…

    C# 2023年5月31日
    00
  • C#利用System.Uri转URL为绝对地址的方法

    当我们在编写 C# 程序时,有时需要将相对 URL 转为绝对 URL。这时可以利用 System.Uri 类提供的方法来实现。在本篇攻略中,我将详细讲解如何使用 System.Uri 类来将相对 URL 转为绝对 URL 的方法。 步骤一:创建 Uri 对象 使用 System.Uri 类中的 Parse 方法或者构造函数,将相对 URL 转为 Uri 对象…

    C# 2023年6月7日
    00
  • C# 数独求解算法的实现

    C# 数独求解算法的实现 本文将详细讲解如何使用C#语言实现数独求解算法。 数独简介 数独是一种逻辑类的游戏,玩家需要在9*9宫的大九宫格中,填入数字1~9,使每行、每列、每个小九宫格内都恰好包含数字1~9,且不重复。 算法思路 数独求解算法的基本思路是采用回溯算法。从数独的左上角开始,依次尝试填入1~9的数字,若当前填入的数字满足数独条件,则进入下一格继续…

    C# 2023年6月6日
    00
  • C#WinForm实现多语言切换的示例

    对于C# WinForm实现多语言切换,以下是完整攻略: 1. 准备工作 首先要在项目中添加多语言资源文件,以便在程序中能够进行语言切换。具体步骤为: 在项目中右键,选择“添加” -> “新建项”; 在弹出的窗口中选择“资源文件”; 命名资源文件,例如Resources.zh-cn.resx,其中“.zh-cn”代表中文简体资源,如果需要支持其他语言可…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部