using AutoMapper; using Microsoft.Extensions.DependencyInjection; namespace QYMessageCenter.Common.Extensions { public static class MapperExtension { private static IMapper _mapper; /// <summary> /// 注册对象映射器 /// </summary> /// <param name="services"></param> /// <param name="profile"></param> /// <returns></returns> public static IServiceCollection AddMapper(this IServiceCollection services, Profile profile) { var config = new MapperConfiguration(cfg => { cfg.AddProfile(profile); }); _mapper = config.CreateMapper(); return services; } /// <summary> /// 设置对象映射执行者 /// </summary> /// <param name="mapper">映射执行者</param> public static void SetMapper(IMapper mapper) { _mapper = mapper; } /// <summary> /// 将对象映射为指定类型 /// </summary> /// <typeparam name="TTarget">要映射的目标类型</typeparam> /// <param name="source">源对象</param> /// <returns>目标类型的对象</returns> public static TTarget Map<TTarget>(this object source) { return _mapper.Map<TTarget>(source); } /// <summary> /// 使用源类型的对象更新目标类型的对象 /// </summary> /// <typeparam name="TSource">源类型</typeparam> /// <typeparam name="TTarget">目标类型</typeparam> /// <param name="source">源对象</param> /// <param name="target">待更新的目标对象</param> /// <returns>更新后的目标类型对象</returns> public static TTarget Map<TSource, TTarget>(this TSource source, TTarget target) { return _mapper.Map(source, target); } } }