AutoMapper12.0.1 扩展方法封装

主要是对于高版本的封装:

cs 复制代码
 public static class AutoMapperExt
    {
        /// <summary>
        ///  类型映射
        /// </summary>
        public static T MapTo<T>(this object obj)
        {
            if (obj == null) return default(T);

            var config = new MapperConfiguration(cfg => cfg.CreateMap(obj.GetType(), typeof(T)));
            var mapper = config.CreateMapper();
            return mapper.Map<T>(obj);
        }

        /// <summary>
        /// 集合列表类型映射
        /// </summary>
        public static List<TDestination> MapToList<TDestination>(this IEnumerable source)
        {
            Type sourceType = source.GetType().GetGenericArguments()[0];  //获取枚举的成员类型
            var config = new MapperConfiguration(cfg => cfg.CreateMap(sourceType, typeof(TDestination)));
            var mapper = config.CreateMapper();

            return mapper.Map<List<TDestination>>(source);
        }

        /// <summary>
        /// 集合列表类型映射
        /// </summary>
        public static List<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
        {
            var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
            var mapper = config.CreateMapper();

            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;

            var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
            var mapper = config.CreateMapper();
            return mapper.Map<TDestination>(source);
        }

    }
}

用于简化对象之间的类型映射操作。以下是对每个方法的简要解释:

  1. MapTo<T>(this object obj) 方法用于将一个对象映射为指定类型 T 的对象。
  2. MapToList<TDestination>(this IEnumerable source) 方法用于将一个集合列表映射为指定类型 TDestination 的对象列表。
  3. MapToList<TSource, TDestination>(this IEnumerable<TSource> source) 方法也是用于将一个集合列表映射为指定类型 TDestination 的对象列表,但是这里需要传入源类型和目标类型。
  4. MapTo<TSource, TDestination>(this TSource source, TDestination destination) 方法用于将一个源对象映射为目标对象,并返回目标对象。此方法还包含了对源和目标对象为空的判断。
相关推荐
BIGFISH20199 小时前
上下相机引导贴合的标定(绝对坐标方式)
c#
燃尽了,可无13 小时前
C#基础编程核心知识点总结
开发语言·c#
我不是程序猿儿15 小时前
【C#】观察者模式 + UI 线程调度、委托讲解
观察者模式·ui·c#
专注VB编程开发20年15 小时前
c# .net支持 NativeAOT 或 Trimming 的库是什么原理
前端·javascript·c#·.net
钢铁男儿16 小时前
C# 简单工厂模式(简单工厂模式如何工作)
前端·c#·简单工厂模式
isyoungboy18 小时前
c#实现鼠标mousemove事件抽稀,避免大数据阻塞网络
c#·计算机外设·远程桌面·deskflow
一枚小小程序员哈1 天前
基于asp.net 的在线餐饮订餐系统的设计与实现/基于c#的网上订餐系统/餐厅管理系统
后端·c#·asp.net
好望角雾眠1 天前
第三阶段数据库-7:sql中函数,运算符,常用关键字
数据库·笔记·sql·学习·sqlserver·c#
海绵宝宝汉堡包1 天前
c# 项目 文件夹
开发语言·c#
曹牧1 天前
C#:窗体间传值
c#