加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Automapper ninject依赖项

发布时间:2020-12-16 09:41:49 所属栏目:asp.Net 来源:网络整理
导读:我的网站上的Automapper有问题,我找不到解决方案. 我已经创建了一个名为AutoMapperProfile的类,我想放置所有的地图 public class AutoMapperProfile: Profile{ private readonly IConfiguration _mapper; public AutoMapperProfile(IConfiguration mapper) {
我的网站上的Automapper有问题,我找不到解决方案.
我已经创建了一个名为AutoMapperProfile的类,我想放置所有的地图

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中添加了以下绑定:

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

控制器看起来像这样:

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映射到幻灯片时,我收到以下错误:

Missing type map configuration or unsupported mapping.

所以我最好的猜测是我没有正确绑定,所以Automapper可以看到我的地图,但我不知道如何解决它.

解决方法

您不需要将IConfiguration注入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和Engine).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读