Asp.net mvc 4 当注入和模块绑定(nInjectModule)到单独的部件中时,如何设置ninject

Asp.net mvc 4 当注入和模块绑定(nInjectModule)到单独的部件中时,如何设置ninject,asp.net-mvc-4,ninject,ninject.web.mvc,ninject-interception,ninject.web,Asp.net Mvc 4,Ninject,Ninject.web.mvc,Ninject Interception,Ninject.web,项目结构如下: MVC4应用程序 1) 该项目是针对MVC的,它的控制器具有注入式接口。 2) 接口存在于该应用程序中 图书馆项目经理。 1) 项目包含MVC应用程序的引用。 2) 将每个接口实现到该程序集中。 3) NinjectMOdule存在于该项目中,其中绑定了与相关manager类的接口 问题:无法将类注入web应用程序 它给出了以下错误: Error没有可用的匹配绑定,并且类型不可自绑定。 激活路径: 2) 将依赖项信息注入HomeController类型构造函数的参数leadInf

项目结构如下:

  • MVC4应用程序 1) 该项目是针对MVC的,它的控制器具有注入式接口。 2) 接口存在于该应用程序中
  • 图书馆项目经理。 1) 项目包含MVC应用程序的引用。 2) 将每个接口实现到该程序集中。 3) NinjectMOdule存在于该项目中,其中绑定了与相关manager类的接口
  • 问题:无法将类注入web应用程序

    它给出了以下错误:
    Error没有可用的匹配绑定,并且类型不可自绑定。
    激活路径:
    2) 将依赖项信息注入HomeController类型构造函数的参数leadInformation中
    1) 请求HomeController通常在“根”项目中,该项目管理加载所有模块所需的内核。这必须在应用程序初始化期间完成,即在应用程序依赖于存在的绑定之前。
    假设绑定
    ILeadInformation
    的模块称为
    LeadModule
    。它看起来像:

    IKernel.Load<LeadModule>();
    
    IKernel.Load();
    

    编辑:

    对于您的具体场景,您有包含应用程序和一些接口的
    mvcapapplication
    程序集,还有引用
    mvcapapplication
    程序集的
    Manager
    程序集,如下所示:

    现在,您应该将组合根放在
    mvcapapplication
    程序集中。但是,不,您不能引用
    管理器
    程序集,因为这会导致循环依赖。 所以我们必须解决这个问题。我们需要将接口移动到新的程序集中。并调整参考,使其看起来像:

    Ya,我这样做了,但它在Manager库中,而不是在MVC应用程序中。因为MVC应用程序只包含接口,其实现在Manager项目中。请指导我如何在这种情况下设置-
    LeadModule
    Implementation
    IKernel.Load()正在使用管理器库项目。其相关接口存在于WebMVC项目中。Manager库项目包含对WEB MVC项目的引用。请查看“复合根”:并涵盖该主题。作为一个简单的总结,您可以有n个(任意数量)程序集,它们在InjectModule中定义绑定。但是,有一个地方(复合根),您将在那里收集所有模块并将它们加载到内核中。您也可以按约定执行此操作,这意味着您不需要显式引用程序集,而是可以使用p.Ex。在执行路径中搜索所有程序集以实现injectModule中的
    injectModule
    ,并加载所有这些程序集(这是最简单的变体)。