无法与ASP.NET Core 3.0 Web API一起使用AutoMapper.Mapper.Map方法

问题描述 投票:0回答:1

我正在遵循Pluralsight来学习Web API概念。我试图将Book实体映射到在Models文件夹中定义的Book DTO对象。但是,我遇到了错误。

我遇到类似错误:

非静态字段,方法或属性'Mapper.Map(object)'

我也无法从Google那里获得太多帮助。当用谷歌搜索相同的内容时,我发现了两个类似的问题herehere。在那里,我感到有道理,但我不了解如何在我的案例中应用相同的规则。

任何人都可以帮助我解决问题!

automapper
1个回答
0
投票

遵循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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.