c# – ninject NinjectWebCommon黑魔法

我只是学习如何使用Ninject并且我理解它的基本原理,但是我应用它的第一个项目是一个MVC 5项目,需要在控制器上进行一些构造函数注入.

我按照网站上的指示即

>我拉进了Nuget套餐
>我在NinjectWebCommon的RegisterServices方法中设置了绑定
>我确保我的控制器有一个接口作为构造函数的参数

这就像炸弹一样,但在我看来,这里只有太多的黑魔法.

我已经解决了因为WebActivator.PreApplicationStartMethod,NinjectWebCommon的start方法在开始时被调用,我的绑定得到了设置.我对此很酷,但我感到困惑的是,kernal.get方法是如何被调用的,以及谁在构造函数中使用参数调用我的控制器(如果我没有Ninject,通常会抛出一个讨厌的运行时错误).

我只能假设某个地方ninject正在使用内核来实例化我的控制器(这反过来又取决于我的接口,并向下移动以解决所有其他问题)

但这会发生在哪里?

*在后台排队令人毛骨悚然的伏都教音乐*

最佳答案 在NinjectDependencyResolver中

https://github.com/ninject/ninject.web.mvc/blob/ebc359a6aa5e13b32cd2bca509037c11a690309f/mvc3/src/Ninject.Web.Mvc/NinjectDependencyResolver.cs#L56

点赞