我正在遵循Pluralsight来学习Web API概念。我试图将Book实体映射到在Models文件夹中定义的Book DTO对象。但是,我遇到了错误。
我遇到类似错误:
非静态字段,方法或属性'Mapper.Map(object)'
我也无法从Google那里获得太多帮助。当用谷歌搜索相同的内容时,我发现了两个类似的问题here和here。在那里,我感到有道理,但我不了解如何在我的案例中应用相同的规则。
任何人都可以帮助我解决问题!
遵循Lucian Bargaoanu的建议,并到达以下解决方案。
在ConfigureServices
方法中编写以下代码:
services.AddAutoMapper(typeof(Startup));
引入了构造函数依赖关系,并使用了IMapper
功能,如下所示:
public class BookResultFilterAttribute : ResultFilterAttribute
{
private readonly IMapper _mapper;
public BookResultFilterAttribute(IMapper mapper)
{
_mapper = mapper;
}
public async override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
var resultFromAction = context.Result as ObjectResult;
if(resultFromAction?.Value == null
|| resultFromAction.StatusCode < 200
|| resultFromAction.StatusCode >= 300)
{
await next();
return;
}
resultFromAction.Value = _mapper.Map<Models.Book>(resultFromAction.Value);
await next();
}
}