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正在使用内核来实例化我的控制器(这反过来又获得了对我接口的依赖,并向下移动以解决所有其他问题)
但这是在哪里发生的呢?
*在背景中排列怪异的巫毒音乐*
在NinjectDependencyResolver 中
https://github.com/ninject/ninject.web.mvc/blob/ebc359a6aa5e13b32cd2bca509037c11a690309f/mvc3/src/Ninject.Web.Mvc/NinjectDependencyResolver.cs#L56
这也发生在我身上,但在我的情况下,我只是做了
1) 。我收到了Nuget包裹2) 。我创建了一个接受参数的构造函数
它是有效的。我没有在NinjectWebCommon的RegisterServices中放入任何内容。
我还在NinjectWebCommon的启动中设置了一个断点,但没有命中。