您的位置:首页 > 娱乐 > 八卦 > 品牌设计公司主营_百度客服人工电话24_深圳关键词优化怎么样_网站运营是做什么的

品牌设计公司主营_百度客服人工电话24_深圳关键词优化怎么样_网站运营是做什么的

2025/3/4 23:52:38 来源:https://blog.csdn.net/weixin_43129075/article/details/145884693  浏览:    关键词:品牌设计公司主营_百度客服人工电话24_深圳关键词优化怎么样_网站运营是做什么的
品牌设计公司主营_百度客服人工电话24_深圳关键词优化怎么样_网站运营是做什么的

传统的AutoMap需要给每一个转换定义规则,如果有很多实体就会很麻烦,所以做了一个扩展类用来简化步骤

使用

//使用
实体1的结果.MapTo<实体2>();//例如 有两个实体
public class User
{public int Id { get; set; }
}
public class UserDto
{public int Id { get; set; }
}
//转换
var user=new User(){Id=1};
user.MapTo<UserDto>();//定制规则
user.MapTo<User, UserDto>(opts =>
{//转换前opts.BeforeMap((src, dest) =>{dest.Id = src.Id;});//转换后opts.AfterMap((src, dest) =>{dest.Id = src.Id;});
});

扩展类

using AutoMapper;
using System.Collections.Concurrent;namespace Easy.Common.Core
{/// <summary>/// automap扩展类/// </summary>public static class AutoMapperExtensions{private static readonly ConcurrentDictionary<string, IMapper> MapperCache = new ConcurrentDictionary<string, IMapper>();private static IMapper GetOrCreateMapper(Type sourceType, Type destinationType){var key = $"{sourceType.FullName}_{destinationType.FullName}";if (!MapperCache.TryGetValue(key, out var mapper)){var config = new MapperConfiguration(cfg =>{cfg.CreateMap(sourceType, destinationType);});mapper = config.CreateMapper();MapperCache[key] = mapper;}return mapper;}/// <summary>/// 实体转换/// </summary>/// <typeparam name="TDestination"></typeparam>/// <param name="source"></param>/// <returns></returns>public static TDestination MapTo<TDestination>(this object source){var mapper = GetOrCreateMapper(source.GetType(), typeof(TDestination));return mapper.Map<TDestination>(source);}/// <summary>/// 列表转换/// </summary>/// <typeparam name="TSource"></typeparam>/// <typeparam name="TDestination"></typeparam>/// <param name="source"></param>/// <returns></returns>public static List<TDestination> MapListTo<TSource, TDestination>(this object source){var mapper = GetOrCreateMapper(source.GetType(), typeof(TDestination));return mapper.Map<List<TDestination>>(source);}/// <summary>/// 扩展转换,指定某些字段转换规则/// </summary>/// <typeparam name="TSource"></typeparam>/// <typeparam name="TDestination"></typeparam>/// <param name="source"></param>/// <param name="opts"></param>/// <returns></returns>public static TDestination MapTo<TSource, TDestination>(this TSource source, Action<IMappingOperationOptions<TSource, TDestination>> opts){var mapper = GetOrCreateMapper(typeof(TSource), typeof(TDestination));return mapper.Map(source, opts);}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com