当前位置: 首页 > 编程语言 > C#

Automappererrorsaysmapperisnotinitialized分享

时间:2023-04-11 01:50:00 C#

Automappererrorsaysmapperisnotinitialized我用的是Automapper5.2。我使用此链接作为基础。我将逐步描述我经历的设置Automapper的过程。首先,我按照说明将Automapper添加到Project.json:PM>Install-PackageAutoMapper其次,我创建了一个文件夹来保存与映射“映射”相关的所有文件第三,我在自己的映射文件夹文件中设置了Automapper配置:公共类AutoMapperConfiguration{publicMapperConfigurationConfigure(){varconfig=newMapperConfiguration(cfg=>{cfg.AddProfile();cfg.AddProfile();cfg.AddProfile();});返回配置;}}Forth也在mappings文件夹中它自己的文件中,我这样设置映射配置文件:map.MapFrom(s=>s.Creator.Username)).ForMember(vm=>vm.Jobs,map=>map.MapFrom(s=>s.Jobs.Select(a=>a.ClientId)));第五,我在mappings文件夹中添加了一个扩展方法作为它自己的文件...这使用了startup.cs中的下一个方法:null){thrownewArgumentNullException(nameof(ser恶习));}varconfig=newAutoMapperConfiguration().Configure();services.AddSingleton(sp=>config.CreateMapper());第六,我将这一行添加到Startup.cs中的ConfigureServices方法//AutomapperConfigurationservices.AddAutoMapper();最后我在控制器中使用它来转换集合...IEnumerable_clientVM=Mapper.Map(_clients);根据我之前的问题,我想我已经设置好了一切,所以我可以使用它,但是我在控制器上方的行中收到错误...“Mapper未初始化使用适当的配置调用Initialize。如果您尝试使用通过容器或其他方式的映射器实例,请确保您没有对静态Mapper.Map方法的任何调用,并且如果您使用的是ProjectTo或UseAsDataSource扩展方法,请确保传入适当的IConfigurationProvider实例。”我是否遗漏了什么……这是设置Automapper的正确方法吗?我怀疑我在这里错过了一步......非常感谢任何帮助。AutoMapper有两种用法:依赖注入和用于向后兼容的旧静态。您正在将其配置为依赖注入,但随后尝试使用静态。那是你的问题。您只需要选择一种方法或另一种方法。如果你想通过依赖注入来实现,你的controller应该将mapper保存为一个构造函数参数给一个成员,然后你需要使用那个成员来映射:publicclassFooController:Controller{publicFooController(IMappermapper){this.mapper=mapper;然后:IEnumerable_clientVM=mapper.Map,IEnumerable>(_clients);对于静态方法,您需要使用您的配置初始化AutoMapper:然后,你只需要在Startup.cs中调用这个方法即可;您将不再注册单身人士。使用AutoMapper.Extensions.Microsfot.DependencyInjection版本5.0.1和AutoMapper7.0.1时出现此错误。用AutoMapper6.1.1安装3.2.0解决了问题,让我正常调用_mapper.Map。我不知道为什么,因为我没有调用静态Mapper类,也没有使用ProjectTo或UseAsDataSource。以上是C#学习教程:Automapper误说mapper没有初始化共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: