ninject NinjectWebCommon black magic

本文关键字:magic black NinjectWebCommon ninject | 更新日期: 2024-09-22 05:08:50

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

我遵循了网站上的指南

  • 我收到了Nuget包裹
  • 我在NinjectWebCommon的RegisterServices方法中设置了绑定
  • 我确保我的控制器有一个接口作为构造函数的参数

这就像一颗炸弹,但这里面有太多的黑色魔法,我不喜欢。

我已经发现,由于WebActivator.PreApplicationStartMethod,NinjectWebCommon的启动方法在一开始就被调用,我的绑定也被设置好了。我对此很冷静,但我感到困惑的是,kernal.get方法究竟是如何被调用的,以及谁在用构造函数中的paramater调用我的控制器(如果我没有Ninject,这通常会引发严重的运行时错误)。

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

但这是在哪里发生的呢?

*在背景中排列怪异的巫毒音乐*

ninject NinjectWebCommon black magic

在NinjectDependencyResolver 中

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

这也发生在我身上,但在我的情况下,我只是做了

1) 。我收到了Nuget包裹2) 。我创建了一个接受参数的构造函数

它是有效的。我没有在NinjectWebCommon的RegisterServices中放入任何内容。

我还在NinjectWebCommon的启动中设置了一个断点,但没有命中。