Dependency injection 如何将AutoMApper.5.2.0与Ninject一起使用?

Dependency injection 如何将AutoMApper.5.2.0与Ninject一起使用?,dependency-injection,ninject,automapper,ninject.web.mvc,Dependency Injection,Ninject,Automapper,Ninject.web.mvc,我现在正在从事一个大型ASP.NETMVC5项目,我正在使用Ninject framework for MVC实现DI。事实上,这是我第一次使用Ninject,我迫切需要知道使用AutoMApper 5.2.0的最佳实践是什么 在谷歌搜索之后,我发现了一些例子,展示了旧版本的AutoMapper,在新版本中有一些不推荐的方法 我的解决方案由以下项目组成: 核心 资料 服务 网 我在这个项目中也在做同样的工作。在Ninject中,有三件事需要为AutoMapper设置 Bind()AutoMapp

我现在正在从事一个大型ASP.NETMVC5项目,我正在使用Ninject framework for MVC实现DI。事实上,这是我第一次使用Ninject,我迫切需要知道使用AutoMApper 5.2.0的最佳实践是什么

在谷歌搜索之后,我发现了一些例子,展示了旧版本的AutoMapper,在新版本中有一些不推荐的方法

我的解决方案由以下项目组成:

  • 核心
  • 资料
  • 服务

  • 我在这个项目中也在做同样的工作。

    在Ninject中,有三件事需要为AutoMapper设置

  • Bind()
    AutoMapper.IMapper
  • 指示AutoMapper将Ninject用于其服务,以及
  • 使用映射初始化AutoMapper
  • 以下是我用于此目的的
    ninject模块

    public class AutoMapperModule : NinjectModule
    {
        public override void Load()
        {
            Bind<IMapper>().ToMethod(AutoMapper).InSingletonScope();
        }
    
        private IMapper AutoMapper(Ninject.Activation.IContext context)
        {
            Mapper.Initialize(config =>
            {
                config.ConstructServicesUsing(type => context.Kernel.Get(type));
    
                config.CreateMap<MySource, MyDest>();
                // .... other mappings, Profiles, etc.              
    
            });
    
            Mapper.AssertConfigurationIsValid(); // optional
            return Mapper.Instance;
        }
    }
    
    public类AutoMapperModule:ninject模块
    {
    公共覆盖无效负载()
    {
    Bind().ToMethod(AutoMapper).InSingletonScope();
    }
    专用IMapper自动映射(Ninject.Activation.IContext上下文)
    {
    初始化(配置=>
    {
    config.ConstructServicesUsing(type=>context.Kernel.Get(type));
    config.CreateMap();
    //..其他映射、配置文件等。
    });
    Mapper.AssertConfigurationsValid();//可选
    返回Mapper.Instance;
    }
    }
    

    然后,您只需将
    AutoMapper.IMapper
    注入到类中,而不是使用静态
    Mapper

    没有最佳实践,请阅读。关于您希望/需要如何实现it,只有用例和业务需求。。。如果你告诉我们更多的细节,我们可能会给你一些具体的答案。谢谢你的帮助,这是我正在做的项目,你想在哪一层做映射?我想在Ioc.Web层做映射。好的,你不清楚使用Automapper的哪些部分?请将所有这些详细信息编辑到您的问题中!顺便说一句,这是Automapper4.2.1。我希望在V5中,对于那些使用这个答案的人来说,不要忘记在内核中注册AutoMapperModule:
    var kernel=new-StandardKernel(new-AutoMapperModule())