AutoMapper封装类

 1 /// <summary>
 2     /// AutoMapper扩展帮助类
 3     /// </summary>
 4     public static class AutoMapperHelper
 5     {
 6         /// <summary>
 7         ///  类型映射
 8         /// </summary>
 9         public static T MapTo<T>(this object obj)
10         {
11             if (obj == null) return default(T);
12             Mapper.CreateMap(obj.GetType(), typeof(T));
13             return Mapper.Map<T>(obj);
14         }
15         /// <summary>
16         /// 集合列表类型映射
17         /// </summary>
18         public static List<TDestination> MapToList<TDestination>(this IEnumerable source)
19         {
20             foreach (var first in source)
21             {
22                 var type = first.GetType();
23                 Mapper.CreateMap(type, typeof(TDestination));
24                 break;
25             }
26             return Mapper.Map<List<TDestination>>(source);
27         }
28         /// <summary>
29         /// 集合列表类型映射
30         /// </summary>
31         public static List<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
32         {
33             //IEnumerable<T> 类型需要创建元素的映射
34             Mapper.CreateMap<TSource, TDestination>();
35             return Mapper.Map<List<TDestination>>(source);
36         }
37         /// <summary>
38         /// 类型映射
39         /// </summary>
40         public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination)
41             where TSource : class
42             where TDestination : class
43         {
44            if (source == null) return destination;
45             Mapper.CreateMap<TSource, TDestination>();
46             return Mapper.Map(source, destination);
47         }
48         /// <summary>
49         /// DataReader映射
50         /// </summary>
51         public static IEnumerable<T> DataReaderMapTo<T>(this IDataReader reader)
52         {
53             Mapper.Reset();
54             Mapper.CreateMap<IDataReader, IEnumerable<T>>();
55             return Mapper.Map<IDataReader, IEnumerable<T>>(reader);
56         }
57     }
58 }

 

转载于:https://www.cnblogs.com/toloe/p/8260095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AutoMapper是一个用于对象映射的开源库。它可以帮助简化对象之间的转换过程,减少手动编写重复的代码。通过配置映射规则,AutoMapper可以自动将一个对象的属性值复制到另一个对象中对应的属性上,而不需要手动逐个属性进行赋值。 使用AutoMapper,你可以定义映射规则,包括源型和目标型以及它们之间的属性映射关系。一旦配置好映射规则,你可以使用简单的API将源对象映射到目标对象上。 以下是一个使用AutoMapper的示例: ```csharp // 定义源型和目标型 public class SourceObject { public string Name { get; set; } public int Age { get; set; } } public class DestinationObject { public string Name { get; set; } public int Age { get; set; } } // 配置映射规则 var config = new MapperConfiguration(cfg => { cfg.CreateMap<SourceObject, DestinationObject>(); }); // 创建映射器 var mapper = config.CreateMapper(); // 创建源对象 var source = new SourceObject { Name = "John", Age = 30 }; // 使用映射器进行对象映射 var destination = mapper.Map<SourceObject, DestinationObject>(source); // 输出目标对象属性值 Console.WriteLine(destination.Name); // 输出:John Console.WriteLine(destination.Age); // 输出:30 ``` 通过使用AutoMapper,你可以简化对象之间的映射过程,提高开发效率。它支持各种复杂的映射场景,并且可以通过自定义转换器来处理更复杂的映射逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值