.NET Core中依赖注入AutoMapper的方法示例
本文主要介绍了关于.NETCore中依赖注入AutoMapper的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:
最近在review代码时发现同事没有像其他项目那样使用AutoMapper.Mapper.Initialize()静态方法配置映射,而是使用了依赖注入IMapper接口的方式
services.AddSingleton(newMapper(newMapperConfiguration(cfg=> { cfg.CreateMap (); })));
于是趁机学习了解一下,在github上发现了AutoMapper.Extensions.Microsoft.DependencyInjection,使用它只需通过AutoMapper.Profile配置映射
publicclassMappingProfile:Profile { publicMappingProfile() { CreateMap(); } }
然后通过AddAutoMapper()进行依赖注入,它会在当前程序集自动找出所有继承自Profile的子类添加到配置中
services.AddAutoMapper();
后来发现在使用ProjectTo时
.Take(10) .ProjectTo() .ToListAsync();
发现如果自己使用AddSingleton
Mappernotinitialized.CallInitializewithappropriateconfiguration.
使用AddAutoMapper()并且将UseStaticRegistration为false时也会出现同样的问题。
解决方法是给ProjectTo传参_mapper.ConfigurationProvider(注:传_mapper不行)
.ProjectTo(_mapper.ConfigurationProvider)
对于自己依赖注入的操作方式,后来参考 AutoMapper.Extensions.Microsoft.DependencyInjection的实现
services.AddSingleton(config); returnservices.AddScoped(sp=>newMapper(sp.GetRequiredService (),sp.GetService));
采用了下面的方式,如果不想使用AddAutoMapper() 通过反射自动找出Profile,建议使用这种方式
AutoMapper.IConfigurationProviderconfig=newMapperConfiguration(cfg=> { cfg.AddProfile(); }); services.AddSingleton(config); services.AddScoped ();
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。