我最近尝试使用 Ninject
与 Ninject.Web.Mvc
扩展,并且注意到了一些奇怪的东西,虽然没有破坏程序但是令人困惑。
在 NinjectHttpApplication
抽象类中,定义了一个构造函数,如下所示...
/// <summary>
/// Initializes a new instance of the <see cref="NinjectHttpApplication"/> class.
/// </summary>
protected NinjectHttpApplication()
{
this.onePerRequestModule = new OnePerRequestModule();
this.onePerRequestModule.Init(this);
}
我在这里设置了一个调试器断点,它被调用了几次。我找不到任何真实的文档来解释。在实现代码中,有一行代码引起了我的注意。
if (kernel.Settings.Get("ReleaseScopeAtRequestEnd", true))
{
OnePerRequestModule.StartManaging(kernel);
}
我的问题如下:
OnePerRequestModule
是什么?- 为什么这个构造函数会被多次调用?
- 如果构造函数被多次调用,那么
StartManaging
方法的目的是什么?