本文主要介绍了关于.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的方法示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)