我确定这是一个愚蠢的问题,因为我假设答案是“当对象被Ninject实例化时...。但是我要仔细检查...
为了给我为什么要问这个问题提供更多背景信息,我有一个实现NinjectHttpApplication
的asp mvc应用程序。但是,在OnApplicationStarted
覆盖范围内,我需要在Ninject绑定的单例实例上激活一个方法。
问题是内核已公开,但不应用作服务定位器,因此我可以从中获取对象并调用DoSomeSetup();
方法,但这似乎是失败的。据我所知,NinjectHttpApplication
实例没有被DI,因为Global.asax文件直接使用它,所以我不能以这种方式将其DI到应用程序中。
这给我留下了另一个选择,该选择是将OnActivation(x=>x.DoSomeSetup());
调用添加到绑定中,但是此对象仅在某些地方使用,因此与第一次加载页面不同,它不像控制器,因此如果OnActivation
等待创建第一个实例,则可能有一段时间不会发生。
希望这不太令人困惑:)