.NET Core中依赖注入AutoMapper的方法示例

.NET Core中依赖注入AutoMapper的方法示例,第1张

概述本文主要介绍了关于.NETCore中依赖注入AutoMapper的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

本文主要介绍了关于.NET Core中依赖注入autoMapper的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

最近在 revIEw 代码时发现同事没有像其他项目那样使用 autoMapper.Mapper.Initialize() 静态方法配置映射,而是使用了依赖注入 IMapper 接口的方式

services.AddSingleton<IMapper>(new Mapper(new MapperConfiguration(cfg =>{ cfg.CreateMap<User,MentionUserDto>();})));

于是趁机学习了解一下,在 github 上发现了 AutoMapper.Extensions.Microsoft.DependencyInjection ,使用它只需通过 autoMapper.Profile 配置映射

public class MapPingProfile : Profile{ public MapPingProfile() {  CreateMap<User,MentionUserDto>(); }}

然后通过 AddautoMapper() 进行依赖注入,它会在当前程序集自动找出所有继承自 Profile 的子类添加到配置中

services.AddautoMapper();

后来发现在使用 ProjectTo 时

.Take(10).ProjectTo<MentionUserDto>().ToListAsync(); 

发现如果自己使用 AddSingleton<IMapper>() ,会出现下面的错误(详见博问):

Mapper not initialized. Call Initialize with appropriate configuration.

使用 AddautoMapper() 并且将 UseStaticRegistration 为 false 时也会出现同样的问题。

解决方法是给 ProjectTo 传参 _mapper.ConfigurationProvIDer 注:传 _mapper 不行)

.ProjectTo<MentionUserDto>(_mapper.ConfigurationProvIDer)

对于自己依赖注入的 *** 作方式,后来参考  autoMapper.Extensions.Microsoft.DependencyInjection 的实现

services.AddSingleton(config);return services.AddScoped<IMapper>(sp => new Mapper(sp.GetrequiredService<IConfigurationProvIDer>(),sp.GetService));

采用了下面的方式,如果不想使用 AddautoMapper()  通过反射自动找出 Profile ,建议使用这种方式

autoMapper.IConfigurationProvIDer config = new MapperConfiguration(cfg =>{ cfg.AddProfile<MapPingProfile>();});services.AddSingleton(config);services.AddScoped<IMapper,Mapper>();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

您可能感兴趣的文章:扩展ASP.NET MVC三层框架且使用StructureMap实现依赖注入1-Model层详解ASP.NET Core 在 JSON 文件中配置依赖注入解读ASP.NET 5 & MVC6系列教程(7):依赖注入详解ASP.NET Core 中的框架级依赖注入五步掌握OOM框架AutoMapper基本使用详解c# AutoMapper 使用方式Automapper实现自动映射的实例代码 总结

以上是内存溢出为你收集整理的.NET Core中依赖注入AutoMapper的方法示例全部内容,希望文章能够帮你解决.NET Core中依赖注入AutoMapper的方法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248347.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存