了解Ninject mvc 3锅炉板代码

本文关键字:代码 3锅 Ninject mvc 了解 | 更新日期: 2023-09-27 18:08:22

如果为mvc安装nuget-Ninject包,它会在App_Start文件夹中放入一个NinjectWebCommon.cs文件。

除了这一行之外,我理解这个文件中99%的内容:

kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);

GitHub 上的完整代码文件

在我看来,最好使用:

kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => bootstrapper.Kernel);

由于静态实例已经在文件的顶部定义,因此它将获得构建了所有映射的内核。

经过一些谷歌搜索,这似乎也很常见:

kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => ctx.Kernel);

样板代码是这样的,背后的原因是什么?

了解Ninject mvc 3锅炉板代码

的绑定

"Func<IKernel>>"

用于将IKernel的新实例注入Bootstrapper.Initialize方法。

创建一个新的引导程序背后的想法是,引导程序构造函数应该构造一个完全初始化的IKernel实例。该新实例将用于替换IKernel的旧实例。

假设是,当调用Initialize方法时,您希望完全重置Bootstrapper实例中的IKernel实例,删除在调用Initialize之前添加的任何绑定。

因此,如果你想在应用程序启动时重置内核之外的其他事情,你应该在lambda表达式中重新执行代码,这样内核就会被传递给Bootstrapper.Initialize所需的状态。

我希望这会有所帮助。