Ninject的OnActivation何时被解雇?

Gro*_*fit 5 ninject

我确信这是一个愚蠢的问题,因为我假设答案是"当对象由Ninject实例化时"......但我想仔细检查......

为了给出更多关于我为什么问这个问题的背景,我有一个实现NinjectHttpApplication的asp mvc应用程序.但是在OnApplicationStarted覆盖中,我需要在Ninject中绑定的单例实例上激活方法.

问题是内核是暴露的,但不应该用作服务定位器,所以我可以从中获取对象并调用DoSomeSetup(); 方法,但这似乎是一个失败.据我所知,NinjectHttpApplication实例不是DI,因为Global.asax文件直接使用它,所以我不能将它直接用于应用程序.

这给我留下了另外一个选项,即添加OnActivation(x => x.DoSomeSetup()); 调用绑定,但是这个对象只在某些地方使用,所以它不像第一次加载页面时控制器需要它,所以如果OnActivation等待创建第一个实例,它可能不会发生一会儿.

希望那不要太混乱:)

Rem*_*oor 2

是的,你的假设是正确的(或者至少大部分是正确的)。即使不是由 Ninject 创建的,激活操作也会在第一次解析实例时运行(例如常量)

对于 HttpApplication,您可以顺便使用属性注入。