AutoMapper 8.0中,需要使用configure来配置mapper。为此,实现动态的类型配置如下

public static class AutoMapHelper
    {
        private static bool ConfigExist(Type srcType, Type destType)
        {
            return Mapper.Configuration.FindMapper(new TypePair(srcType, destType)).IsNull();
        }

private static bool ConfigExist<TSrc, TDest>()
        {
            return Mapper.Configuration.FindMapper(new TypePair(typeof(TSrc), typeof(TDest))).IsNull();
        }

public static T MapTo<T>(this object source)
        {
            if (source.IsNull())
            {
                return default(T);
            }

if (!ConfigExist(source.GetType(), typeof(T)))
            {
                Mapper.Initialize(cfg => cfg.CreateMap(source.GetType(), typeof(T)));
            }

return Mapper.Map<T>(source);
        }

public static IList<T> MapTo<T>(this IEnumerable source)
        {
            foreach (var first in source)
            {
                if (!ConfigExist(first.GetType(), typeof(T)))
                {
                    Mapper.Initialize(cfg => cfg.CreateMap(first.GetType(), typeof(T)));
                }

break;
            }

return Mapper.Map<IList<T>>(source);
        }

public static IList<TDest> MapTo<TSource, TDest>(this IEnumerable<TSource> source)
        {
            if (!ConfigExist<TSource, TDest>())
            {
                Mapper.Initialize(cfg => cfg.CreateMap<TSource, TDest>());
            }

return Mapper.Map<IList<TDest>>(source);
        }

public static TDest MapTo<TSource, TDest>(this TSource source, TDest dest)
            where TSource : class
            where TDest : class
        {
            if (source.IsNull())
            {
                return dest;
            }

if (!ConfigExist<TSource, TDest>())
            {
                Mapper.Initialize(cfg => cfg.CreateMap<TSource, TDest>());
            }

return Mapper.Map<TDest>(source);
        }
    }

AutoMapper 8.0的应用--动态配置相关推荐

  1. springboot整合Quartz实现动态配置定时任务

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liuchuanhong1/article/details/60873295 前言 在我们日常的开发中,很多 ...

  2. 分布式动态配置后浪推前浪 -- Nacos

    ???? 前言 Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域. Nacos 致力于帮助您发现.配置和管理微服务.N ...

  3. kafka原理_Kafka动态配置实现原理解析

    总 第19篇 2019年 第15篇 一.问题导读Apache Kafka在全球各个领域各大公司获得广泛使用,得益于它强大的功能和不断完善的生态.其中Kafka动态配置是一个比较高频好用的功能,下面我们 ...

  4. NGINX发布支持动态配置的开源Web服务器

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ NGINX最近发布了NGINX Unit 1.0版.NGINX Unit是一种开源的Web和 ...

  5. 微服务架构:动态配置中心搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息 ...

  6. IdentityServer4-EF动态配置Client和对Claims授权(二)

    IdentityServer4-EF动态配置Client和对Claims授权(二) 原文:IdentityServer4-EF动态配置Client和对Claims授权(二) 本节介绍Client的Cl ...

  7. Quartz 在 Spring 中如何动态配置时间

    在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间 ...

  8. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.  有关调度的实现我就第一就想到了Quartz这个开 ...

  9. Linux部署动态网页,Nginx发布支持动态配置的开源Web服务器

    NGINX最近发布了NGINX Unit 1.0版.NGINX Unit是一种开源的Web和应用服务,它支持远程配置和动态配置,使得配置上的更改不会对服务造成中断.Unit 1.0还支持在同一实例中运 ...

最新文章

  1. 编译语言与解释语言,动态与静态,以及强类型和弱类型的区别
  2. 《人工智能转型手册》,吴恩达 著
  3. Spring(07)——单例注入多例之lookup-method
  4. CEGUI中文处理(补)
  5. Android被逼学习例子2
  6. Objective-C基础笔记(3)OC的内存管理
  7. HTML5 Canvas 绘图
  8. 无聊了就上来转转,看看大家发的东东也挺好玩的啊
  9. 关于5G被激烈讨论的那些争端和冲突
  10. libevent c++高并发网络编程_高并发-网络I/O
  11. 通过公众号注册小程序
  12. 815计算机考研科目,2019年“815-计算机专业基础综合”考试大纲
  13. 江苏省计算机一级主要考什么,江苏省计算机一级考试复习资料 很全面的
  14. Ubuntu SSE指令集 编程实例---复数乘法与共轭乘法
  15. (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  16. Linux下安装realtek8812au /8814au 驱动
  17. CE162Lec06的学习记录
  18. C语言将一个简单的文件压缩
  19. Stammering Aliens
  20. 素质拓展·【团建宝】千岛湖皮划艇+露营+环岛骑行2日团建-【携程旅游】

热门文章

  1. # istio 实战 五 网格可视化 - kiali
  2. Oracle查看表空间及大小
  3. mysql长轮询_【系列一】ajax长轮询、轮询应用和介绍
  4. 苹果移动设备型号汇总
  5. 【AIOT】1.3 课程安排介绍
  6. 浏览器数据库IndexedDB初体验
  7. mac weka连接mysql_weka连接mysql数据库
  8. java大作业的打猎游戏_Java基于Swing实现的打猎射击游戏代码
  9. 【思考】由安装zabbix至排障php一系列引发的思考
  10. Linux 运行jar包命令如下: