gpt4 book ai didi

asp.net - Automapper ninject 依赖项

转载 作者:行者123 更新时间:2023-12-02 16:54:41 25 4
gpt4 key购买 nike

我的网站上的 Automapper 出现问题,但找不到解决方案。我创建了一个名为 AutoMapperProfile 的类,我想将所有 map 放在其中

public class AutoMapperProfile: Profile
{
private readonly IConfiguration _mapper;

public AutoMapperProfile(IConfiguration mapper)
{
_mapper = mapper;
}

protected override void Configure()
{
base.Configure();

_mapper.CreateMap<SlideDTO, Slide>();
_mapper.CreateMap<Slide, SlideDTO>();
}
}

出于 DI 目的,我使用 Ninject,因此我在 NinjectWebCommon 中添加了以下绑定(bind):

kernel.Bind<IMappingEngine>().ToMethod(ctx => Mapper.Engine);
kernel.Bind<IConfigurationProvider>().ToMethod(x => Mapper.Engine.ConfigurationProvider);

Controller 看起来像这样:

private readonly ISlideRepository slideRepository;
private readonly IMappingEngine mappingEngine;

public HomeController(
ISlideRepository slideRepository,
IMappingEngine mappingEngine)
{
this.slideRepository = slideRepository;
this.mappingEngine = mappingEngine;
}

[HttpGet]
public ActionResult Index()
{
var model = new IndexViewModel();
var slide = slideRepository.GetSlide();
model.Slide = mappingEngine.Map<SlideDTO, Slide>(slide);

return View(model);
}

当我从 SlideDTO 映射到 Slide 时,出现以下错误:

Missing type map configuration or unsupported mapping.

所以我最好的猜测是我没有正确进行绑定(bind),以便 Automapper 可以看到我的 map ,但我不确定如何修复它。

最佳答案

您不需要将 IConfiguration 注入(inject)到 AutoMapperProfile 中,它已经从 Profile 继承了 CreateMap 方法.

确保 AutoMapperProfile 具有如下所示的无参数构造函数:

public class AutoMapperProfile : Profile
{
protected override void Configure()
{
this.CreateMap<SlideDTO, Slide>();
this.CreateMap<Slide, SlideDTO>();
}
}

然后您需要确保 AutoMapper 了解此配置文件,具体方法如下:

Mapper.Engine.ConfigurationProvider.AddProfile<AutoMapperProfile>();

请注意,您可以在任何 IConfigurationProvider 上调用 AddProfile 方法(如果您决定不使用全局 ConfigurationProvider引擎)。

关于asp.net - Automapper ninject 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com