封装一个Automapper单例
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单例的更多相关文章
- 封装MySQL的单例,连接数据库并对数据进行增删改查操作
单例: 一个类只能有一个对象 应用场景:多次请求数据库只需要一个连接对象. 实现:三私一公 1.私有的静态属性用来保存对象的单例2.私有的构造方法用来阻止在类的外部实例化3.私有的__clone阻止在 ...
- 基于Ant Design Vue封装一个表单控件
开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...
- muduo网络库源码学习————线程本地单例类封装
muduo库中线程本地单例类封装代码是ThreadLocalSingleton.h 如下所示: //线程本地单例类封装 // Use of this source code is governed b ...
- [iOS]封装单例类
[iOS]封装单例类 今天在学习iOS的SQLite开发,发现在需要使用SQLite的每个视图中,都需要对数据库进行打开或关闭,觉得挺麻烦的:于是在想能否写个单例类对这些操作进行封(因以前一直在使用D ...
- Java单例设计模式(实现Java的一个类只有一个对象)
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象. 如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...
- python__基础 : 类的__new__方法与实现一个单例
__new__ : 这个方法的作用主要是创建一个实例,在创建实例时首先会调用 __new__方法 ,然后调用__init__对实例进行初始化, 如果想修改 __new__ 这个方法,那么最后要 ret ...
- Java设计模式之单例
一.Java中的单例: 特点: ① 单例类只有一个实例 ② 单例类必须自己创建自己唯一实例 ③ 单例类必须给所有其他对象提供这一实例 二.两种模式: ①懒汉式单例<线程不安全> 在类加载时 ...
- Swift - 简单封装一个工具类模板
创建模板类(封装一个类) 例1:新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var desc ...
- 属性传值,协议传值,block传值,单例传值四种界面传值方式
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...
随机推荐
- hdu-3524 Perfect Squares---打表+找规律+循环节
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3524 题目大意: 求i^2 mod 2^n有多少可能 解题思路: 先打表,求出n较小的时候的数据 n ...
- 洛谷 P3175 [HAOI2015]按位或
题目分析 与hdu4336 Card Collector相似,使用min-max容斥. 设\(\max(S)\)表示集合\(S\)中最后一位出现的期望时间. 设\(\min(S)\)表示集合\(S\) ...
- JS常用方法封装
迭代添加各种常用方法:项目中一定会有很多常用的方法,包括:取值,校验,等...... 获取 url 后的参数 function getQueryString(name) { var reg = new ...
- JS中的prototype (转载)
JS中的prototype JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是 ...
- [转]C#如何获取客户端IP地址
代码如下: /// <summary> /// 获取客户端IP地址 /// </summary> /// <returns></returns> ...
- 01-Python学习笔记-基础语法
Python标识符 -d 在解析时显示调试信息 -O 生成优化代码 ( .pyo 文件 ) -S 启动时不引入查找Python路径的位置 - ...
- springboot集成activiti工作流时容易出现的问题
No.1 启动报错 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'or ...
- 课时53.video标签第二种格式(掌握)
由于视频数据非常非常的重要,所以五大浏览器厂商都不愿意支持别人都视频格式,所以导致了没有一种视频格式是所有浏览器都支持的,这个时候W3C为了解决这个问题,所以推出了第二种video标签的格式 如何查看 ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach
一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代 ...
- Oracle作业3 —— 简单查询
一.创建学生表 CREATE TABLE STUDENTS( STU_ID ) CONSTRAINTS PK_STUS_ID PRIMARY KEY, STU_NAME ) NOT NULL, STU ...