我最近将.net核心升级到3.0,并将Automapper从6.2升级到9.0。现在,在mapfrom函数中使用mapper.map时,自动映射器将引发以下编译时错误。
MutableLiveData
非静态字段,方法或属性'Mapper.Map(xxx)'需要对象引用
Automapper已在其针对Mapper类Methods的新升级中删除了static关键字。
我最近将.net核心升级到3.0,并将Automapper从6.2升级到9.0。现在,在mapfrom函数中使用mapper.map时,自动映射器将引发以下编译时错误。
MutableLiveData
非静态字段,方法或属性'Mapper.Map(xxx)'需要对象引用
Automapper已在其针对Mapper类Methods的新升级中删除了static关键字。
您的问题特定于映射器的配置文件,但帖子标题也与以下问题相关。就我而言,这不是完全相同的问题,但是我遇到了相同的错误。因此,我想与像我一样发生同样错误的任何人分享此内容。
看起来像Automapper不再是静态类。因此,您将需要实例化它。为此,您需要安装软件包:
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
完成后,您可以像这样在类中注入IMapper实例:
public MyClass {
private readonly IMapper _mapper;
public MyClass(IMapper mapper){
_mapper = mapper;
}
public DtoType SomeMethod(EntityType entity){
// do your mapping..
var myDtoType = _mapper.Map<DtoType>(entity);
}
}
重要的是,由于您从未在ServiceCollection中注册IMapper,因此看起来有点黑魔法。但是Nuget程序包和ConfigureServices中对“ AddAutoMapper”的调用将为您解决所有这些问题。
PS:没在VS上写代码,但是你明白了。
,我最近也遇到了问题,这是我所做的
已安装此软件包AutoMapper.Extensions.Microsoft.DependencyInjection
。该软件包依赖于AutoMapper。它还包含针对AutoMapper的ASP.NET核心特定扩展,从而使其可以与内置的依赖项注入系统一起很好地发挥作用。
然后按照下面的链接上的步骤进行操作。那你应该很好走
https://dotnetcoretutorials.com/2017/09/23/using-automapper-asp-net-core/