【发布时间】:2011-09-28 22:07:10
【问题描述】:
我确信这是一个愚蠢的问题,因为我假设答案是“当对象被 Ninject 实例化时”......但我想仔细检查......
为了提供更多关于我为什么提出这个问题的背景信息,我有一个实现 NinjectHttpApplication 的 asp mvc 应用程序。但是在 OnApplicationStarted 覆盖中,我需要激活绑定在 Ninject 中的单例实例上的方法。
问题是内核暴露了,但不应该用作服务定位器,所以我可以从中取回对象并调用DoSomeSetup(); 方法,但这似乎失败了。据我所知,NinjectHttpApplication 实例不是 DI 的,因为 Global.asax 文件直接使用它,所以我不能以这种方式将它 DI 到应用程序中。
这给我留下了另一个选择,那就是将 OnActivation(x=>x.DoSomeSetup()); 调用添加到绑定中,但是这个对象只在某些地方使用,所以它不像你第一次加载页面时需要它控制器,所以如果OnActivation 等待第一个实例被创建,它可能暂时不会发生。
希望这不会太令人困惑:)
【问题讨论】:
标签: ninject