首页 > 其他分享 >让AutoMapper使用变得简单

让AutoMapper使用变得简单

时间:2023-10-20 09:13:57浏览次数:43  
标签:Mapper return 映射 source static 简单 AutoMapper 变得

 

倘若在项目中真正要用的时候,我觉得还是应该对AutoMapper的方法进行一些整理,最好能够封装一下,这里我通过扩展方法的形式将其封装为AutoMapperHelper,这样以后使用AutoMapper就变的SO EASY了~

 

using System.Collections;

using System.Collections.Generic;

using System.Data;

using AutoMapper;

namespace Infrastructure.Utility

{

/// <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);

}

}

}

 

你可以像下面的例子这样使用:

 

//对象映射

ShipInfoModel shipInfoModel = ShipInfo.MapTo<ShipInfoModel>();

//列表映射

List< ShipInfoModel > shipInfoModellist = ShipInfoList.MapToList<ShipInfoModel>();

标签:Mapper,return,映射,source,static,简单,AutoMapper,变得
From: https://www.cnblogs.com/wgy1984/p/17776228.html

相关文章

  • 以下是一个简单的HTML代码示例,演示如何实现分身份登录(用户登录和管理员登录)
    <!DOCTYPEhtml><html><head><title>分身份登录</title></head><body><h2>用户登录</h2><formaction="user_login.php"method="post"><labelfor="user_username"......
  • mysql函数CASE WHEN简单使用
    实际案例CASEwhencc.cLIKE'%迟到%'THEN'扣一分'ELSENULLEND如果有个需要判断CASEwhencc.cLIKE'%迟到%'THEN'扣一分'whencc.cLIKE'%早退%'THEN'扣两分'ELSENULLEND这里的case和w......
  • 第二十七篇——一阳穿三线选股指标公式,简单却实用(从零起步编写通达信指标公式系列)
    一阳穿三线,顾名思义就是一根阳线上穿了三条均线。看图比较直观,如下图箭头处的K线。 一、一阳穿三线选股指标公式一阳穿三线选股指标公式编写思路还是比较简单的,首先需要定义三条均线,然后比较得出这三条均线的最大值和最小值,最后限定K线的收盘价大于均线最大值,K线的开盘价......
  • 如何结合Microhttpd库的C语言编写一个简单的爬虫
    今天要给大家分享的是,使用Microhttpd库的C语言编写一个用于采集人民网图片的蜘蛛程序,以便于大家进行更好的学习,让我们一起来学习一下。#include#include#include#include#include#include#include#include#include//定义一个函数来获取代理服务器char*get_proxy(){//......
  • 10月19日简单的cs架构软件编写
    目录简单的cs架构软件编写首先创建两个文件然后就是客户端的步骤简单的cs架构软件编写首先创建两个文件如图这里两个文件都需要使用到socket这个模块首先是通信服务器的编写第一步导入socket这个模块第二步创建一个socket对象soc,它表示服务器的主要通信端口。第三步用soc......
  • 关于 systemctl 的简单使用
    启动服务:systemctlstartvsftpd.service关闭服务:systemctlstopvsftpd.service重启服务:systemctlrestartvsftpd.service显示服务的状态:systemctlstatusvsftpd.service在开机时启用服务:systemctlenablevsftpd.service在开机时禁用服务:systemctldisablevsftpd.servic......
  • Linux 软连接 ln -s 简单使用看这篇就够了
    全网很多文章讲源文件和目标文件,或者target和source哪个连到哪个完全没有讲清楚,一个不小心操作失误很容易造成源数据直接丢失!!! 1ln-s/A/B 这里A和B的路径要用绝对路径,执行这个命令就是在当前目录下把B指向A,也就是A是实际存在的,B是虚拟的假的......
  • 通过SQLserver系统存储过程分离和附加数据库的简单使用
    sp_detach_db 数据库分离sp_detach_db 是SQLServer中的一个系统存储过程,用于卸载数据库。使用这个存储过程可以使得数据库不再与当前SQLServer实例关联。以下是 sp_detach_db 的基本语法:sp_detach_db'database_name';其中 'database_name' 是要卸载的数据库的名......
  • WebRTC 简单入门与实践
     一、前言WebRTC技术已经广泛在各个行业及场景中被应用,但对多数开发者来说,实时音视频及相关技术却是比较不常接触到的。做为一名Web开发者,WebRTC这块的概念着实花了不少时间才搞明白,一是WebRTC本身有较多的独有概念,二是虽然带“Web”字样,但依赖底层概念和网络却是Web......
  • 新手教程系列:群晖QuickConnect:最简单的群晖外网访问NAS工具
    通过群晖Synology免费提供的QuickConnect服务,您可在外部网络轻松连接到群晖SynologyNAS,而无需设置端口转发规则或其它复杂的网络设置。QuickConnect可让您通过一个简单的可自定义地址(如 quickconnect.to/example)进行连接。这是一个简单易用,快捷部署的外网访问方式,适合群晖......