使用 AutoMapper 进行赋值

一. 什么是 AutoMapper

  AutoMapper是对象到对象的映射工具。在完成映射规则之后,AutoMapper可以将源对象转换为目标对象。

二. AutoMapper 安装使用

1.安装 AutoMapper

Vs2015及以上版本右键解决方案--->管理Nuget方案中输入AutoMaper选择对应.NETFRAMEWORK支持版本进行安装。

2.引入 AutoMapperHelper AutoMapper 扩展帮助类

 /// <summary>
/// AutoMapper扩展帮助类
/// </summary>
public static class AutoMapperHelper
{
/// <summary>
/// 类型映射
/// </summary>
public static T MapTo<T>(this object obj)
{
if (obj == null) return default(T);
Mapper.CreateMap(obj.GetType(), typeof(T));
return Mapper.Map<T>(obj);
}
/// <summary>
/// 集合列表类型映射
/// </summary>
public static List<TDestination> MapToList<TDestination>(this IEnumerable source)
{
foreach (var first in source)
{
var type = first.GetType();
Mapper.CreateMap(type, typeof(TDestination));
break;
}
return Mapper.Map<List<TDestination>>(source);
}
/// <summary>
/// 集合列表类型映射
/// </summary>
public static List<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
{
//IEnumerable<T> 类型需要创建元素的映射
Mapper.CreateMap<TSource, TDestination>();
return Mapper.Map<List<TDestination>>(source);
}
/// <summary>
/// 类型映射
/// </summary>
public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination)
where TSource : class
where TDestination : class
{
if (source == null) return destination;
Mapper.CreateMap<TSource, TDestination>();
return Mapper.Map(source, destination);
}
/// <summary>
/// DataReader映射
/// </summary>
public static IEnumerable<T> DataReaderMapTo<T>(this IDataReader reader)
{
Mapper.Reset();
Mapper.CreateMap<IDataReader, IEnumerable<T>>();
return Mapper.Map<IDataReader, IEnumerable<T>>(reader);
}
}

两个对象:

        //这里是原对象
public class datas
{
public string appKey { get; set; }
public string kpzdbs { get; set; }
public string jqbh { get; set; }
public string fpqqlsh { get; set; }
public string kplx { get; set; }
public string fplxdm { get; set; }
public string zsfs { get; set; }
public string tspzbs { get; set; }
public string xfsh { get; set; }
public string xfmc { get; set; }
public string xfdzdh { get; set; }
public string xfyhzh { get; set; }
public string gfmc { get; set; }
public string gfsh { get; set; }
public string gfdzdh { get; set; }
public string gfyhzh { get; set; }
public string gfsjh { get; set; }
public string gfdzyx { get; set; }
public string qdbz { get; set; }
public string bz { get; set; }
public string kpr { get; set; }
public string skr { get; set; }
public string fhr { get; set; }
public string jshj { get; set; }
public string hjje { get; set; }
public string hjse { get; set; }
public string sblx { get; set; }
} //这里是被赋值的对象
public class datasdto : datas
{
public List<fyxm> fyxm { get; set; }
public string sign { get; set; }
}

赋值使用:

    //原赋值对象
datas datasmodel = new datas();
//被赋值对象
datasdto dtoDatasdtomodel = new datasdto();
//赋值
dtoDatasdtomodel = datasmodel.MapTo(dtoDatasdtomodel);

结语

AutoMapper 是一款强大的对象映射器,本文只是项目中的一个简单实例,用于记录学习,有错误的地方希望大佬能给予指出,会及时修改。

官网地址:http://automapper.org/

官方文档:https://docs.automapper.org/en/latest/

AutoMaper使用的更多相关文章

  1. EF AutoMaper

    Mapper.CreateMap<Source,Dest>(); 该方法已弃用,使用下面这个 Mapper.Initialize(x=>x.CreateMap<Source,D ...

  2. C# AutoMaper使用自定义主键

    有时候实际业务中主键不一定叫Id,比如示例数据库Northwind中的RegionID,TerritoryID等,本示例用Abp框架并以Northwind数据库Region表为数据依据 一.在Core ...

  3. C# AutoMaper简单使用

    AutoMapper它是一种对象与对象之间的映射器,让AutoMapper有意思的就是在于它提供了一些将类型A映射到类型B这种无聊的实例,只要B遵循AutoMapper已经建立的惯例,那么大多数情况下 ...

  4. AutoMapper搬运工之初探AutoMapper

    写在前面 知道AutoMapper很久了,但是一直没有用,最近刚好有个场景需要就用了,果然是利器.看了git上的wiki,发现内容其实wiki上写的很全面了,深入的暂时还没挖掘到.不过和群里的朋友交流 ...

  5. 使用C#设计Fluent Interface

    我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent Interface, 这样的API充分利用了VS的智能提示,而且写出来的代码非常整洁.我们如 ...

  6. Core 1.0中的管道-中间件模式

    ASP.NET Core 1.0中的管道-中间件模式 SP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middlewar ...

  7. C#中设计Fluent API

    C#中设计Fluent API 我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent API, 这样的API充分利用了VS的智能提示,而且写出来的 ...

  8. AutoMapper使用说明

    1.引用命名空间 using AutoMapper;using AutoMapper.Mappers; 2.实体类和dto public class Order { public int orderi ...

  9. 使用NPOI导出Excel引发异常(IsReadOnly = “book.IsReadOnly”引发了类型“System.NotImplementedException”的异常)

    前言: 本人调式npoi导入.导出试用成功后,引入到项目中,导入完美运行,但是导出怎么样都看不到现在的页面,而且浏览器和后台都没有报任务错误,让人好事纳闷,后来去调式,发现在除了一个IsReadOnl ...

  10. .Net 事件总线之Autofac解耦

    事件总线是通过一个中间服务,剥离了常规事件的发布与订阅(消费)强依赖关系的一种技术实现.事件总线的基础知识可参考圣杰的博客[事件总线知多少] 本片博客不再详细概述事件总线基础知识,核心点放置使用Aut ...

随机推荐

  1. 一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator

    前言 对于后端程序员来说,编写SQL代码是日常工作中不可或缺的一部分.然而,随着数据复杂性的增加,如何高效.准确地编写SQL查询成为了新的挑战.幸运的是,SQL Translator的出现为后端程序员 ...

  2. AI Agent实战:智能检索在Kingbase数据库管理中的优势应用

    前言 在信息技术飞速发展的今天,数据库管理已成为IT专业人员日常工作中不可或缺的一部分.然而,面对复杂的SQL问题,传统的web搜索往往难以提供精准的答案,尤其是在针对特定数据库系统,如金仓数据库时, ...

  3. 为什么说这款99元国产ARM工业平台,具有“划时代”意义

    随着近年来进口处理器涨价不断,大家会发现市面上已很少见到99元的ARM工业核心板出售. 为满足客户对低成本.高性能的需求,创龙科技推出基于全志T113-i国产ARM工业处理器的"划时代&qu ...

  4. SD中的VAE,你不能不懂

    什么是VAE? VAE,即变分自编码器(Variational Autoencoder),是一种生成模型,它通过学习输入数据的潜在表示来重构输入数据. 在Stable Diffusion 1.4 或 ...

  5. Vscode连接虚拟机报错

    Vscode 连接虚拟机报错问题解决 问题解释 Permission denied, please try again.出现这个问题通常表示身份验证失败. 可能的原因有 SSH用户密码错误 SSH端口 ...

  6. oeasy教您玩转vim - 2 - # 使用帮助

    回忆上节课内容 更新和运行 vim 进入和退出 vim 存活了下来 从中我们知道 vim 有两种模式:正常模式(Normal mode)和命令行模式 (Command-Line mode) 为了您能更 ...

  7. odoo 开发入门教程系列-一个新应用

    一个新应用 房地产广告模块 假设需要开发一个房地产模块,该模块覆盖未包含在标准模块集中特定业务领域. 以下为包含一些广告的主列表视图 form视图顶层区域概括了房产的重要信息,比如name,Prope ...

  8. Django Template层之自定义tag

    Django Template层之自定义tag by:授客 QQ:1033553122 测试环境 Win7 Django 1.11 实践 步骤1 应用根目录下,新建templatetags包目录(注意 ...

  9. c语言的编译与调试

    1. GCC/G++ gcc和g++是GNU Compiler Collection中的编译器,分别用于编译C和C++程序.它们的编译过程主要包括四个步骤:预处理(Pre-Processing).编译 ...

  10. SEO自动外链工具的功效以及使用心得

    SEO外链发布工具原理 1.自动SEO外链工具原理:就是把您的网址提交大站长工具类似的网站上面进行搜索,然后就会在上面留下痕迹自动生成以网址为标题的静态页面. 2.自动SEO外链发布效果:我们就是利用 ...