public class DataModule : IModule
{
public void Configure(IMapperConfigurationExpression cfg)
{
//cfg.CreateMap<ApproveAtcPo, ApproveAtcVo>().ReverseMap(); }
}
         /// <summary>
/// 注册需要转换的类型
/// </summary>
private PoMapper()
{
AutoMapper.Mapper.Initialize(cfg =>
{
//多模块注册方式
new DataModule().Configure(cfg);
new AliasModule().Configure(cfg);
});
}
     public class MapperTool
{
private static volatile MapperTool mapper = null;
private static object syncRoot = new Object();
public static readonly List<Type> typeList = null;
/// <summary>
/// 注册需要转换的类型
/// </summary>
private MapperTool()
{
Mapper.Initialize(cfg =>
{
//指定不同属性映射demo
//cfg.CreateMap<auth_userVo, t_auth_user>()
// .ReverseMap()
// .ForMember(dest => dest.id, opt => opt.MapFrom(src => src.rid))
// .ForMember(dest => dest.update, opt => opt.MapFrom(src => src.create)); });
//验证是否所有字段都转换了
//Mapper.Configuration.AssertConfigurationIsValid();
} private MapperTool(List<Type[]> TypeList)
{
Mapper.Initialize(cfg =>
{
foreach (var type in TypeList)
{
cfg.CreateMap(type[], type[]).ReverseMap();
}
});
} /// <summary>
/// 初始化注册Mapper
/// </summary>
public static MapperTool Instance
{
get
{
if (mapper == null)
{
lock (syncRoot)
{
if (mapper == null)
{
mapper = new MapperTool();
} }
}
return mapper;
}
} /// <summary>
/// 传入需要转换的对象
/// </summary>
/// <typeparam name="F">需要转换的对象类型</typeparam>
/// <typeparam name="T">转换目标对象类型</typeparam>
/// <param name="f">需要转换的对象</param>
/// <returns>目标对象</returns>
public T Map<F, T>(F f)
where F : new()
where T : new()
{
return Mapper.Map<F, T>(f);
}
}

封装一个Automapper单例的更多相关文章

  1. 封装MySQL的单例,连接数据库并对数据进行增删改查操作

    单例: 一个类只能有一个对象 应用场景:多次请求数据库只需要一个连接对象. 实现:三私一公 1.私有的静态属性用来保存对象的单例2.私有的构造方法用来阻止在类的外部实例化3.私有的__clone阻止在 ...

  2. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

  3. muduo网络库源码学习————线程本地单例类封装

    muduo库中线程本地单例类封装代码是ThreadLocalSingleton.h 如下所示: //线程本地单例类封装 // Use of this source code is governed b ...

  4. [iOS]封装单例类

    [iOS]封装单例类 今天在学习iOS的SQLite开发,发现在需要使用SQLite的每个视图中,都需要对数据库进行打开或关闭,觉得挺麻烦的:于是在想能否写个单例类对这些操作进行封(因以前一直在使用D ...

  5. Java单例设计模式(实现Java的一个类只有一个对象)

    单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象.  如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...

  6. python__基础 : 类的__new__方法与实现一个单例

    __new__ : 这个方法的作用主要是创建一个实例,在创建实例时首先会调用 __new__方法 ,然后调用__init__对实例进行初始化, 如果想修改 __new__ 这个方法,那么最后要 ret ...

  7. Java设计模式之单例

    一.Java中的单例: 特点: ① 单例类只有一个实例 ② 单例类必须自己创建自己唯一实例 ③ 单例类必须给所有其他对象提供这一实例 二.两种模式: ①懒汉式单例<线程不安全> 在类加载时 ...

  8. Swift - 简单封装一个工具类模板

    创建模板类(封装一个类) 例1:新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var desc ...

  9. 属性传值,协议传值,block传值,单例传值四种界面传值方式

    一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...

随机推荐

  1. AsyncTask使用实例,异步加载图片

    在上一篇,详细介绍了AsynTask的基础知识.没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4892310.html 那么在这篇文 ...

  2. 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date

    问题描述: 数据表中有记录的time字段(属性为timestamp)其值为:“0000-00-00 00:00:00” 程序使用select 语句从中取数据时出现以下异常: Java.sql.SQLE ...

  3. newcoder NOIP提高组模拟赛C题——保护

    我是发了疯才来写这道题的 我如果用写这道题的时间去写dp,我估计我能写上三四道 可怕的数据结构题 题目 这道题的鬼畜之处在于实在是不太好写 我们看到要求离树根尽量的近,所以我们很容易就能想到树上倍增, ...

  4. new ,malloc

    特征 new/delete malloc/free 分配内存的位置 自由存储区 堆 内存分配失败返回值 完整类型指针 void* 内存分配失败返回值 默认抛出异常 返回NULL 分配内存的大小 由编译 ...

  5. 【luogu P3946 ことりのおやつ】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3946 交好几遍是因为虽然能过一直有提醒..强迫症qwq #include <bits/stdc++.h ...

  6. HDU 2082 找单词 (普通型 数量有限 母函数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2082 找单词 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  7. HTML5——前端预处理技术(Less、Sass、CoffeeScript)

    一.Less 1.1.概要 Less是一种动态样式语言,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 将 C ...

  8. 如何在jsp页面获取系统时间

    <%@ page import="java.util.*"%> //获取系统时间必须导入的 <%@ page import="java.text.*&q ...

  9. Oracle 体系结构一 概述

    Oracle服务器由两个实体组成:实例和数据库. 实例由内存结构和进程组成. 它暂时存在于RAM和CPU中.当关闭运行的实例时,实例将消失的无影无踪. 数据库由磁盘上的文件组成.不管在运行状态还是停止 ...

  10. iOS 获取蜂窝网络信号强度 包含iPhoneX XS XR XSMASX (最新)

    1.虽然各种直接获取信号强度的api都被封杀了.但是还有一个另类的黑魔法可以获取到.那就是遍历UIStatusBar了 网络上有的文章写的会崩溃 比如: - (int)getSignalStrengt ...