最近,我将我的一个 MVC3 项目从 Ninject 2 升级到了 Ninject 3。
几分钟后试图找出 InRequestScope 不再可用的原因,我发现它现在是 Ninject.Web.Common 的扩展。
现在,当我尝试运行应用程序时,Ninject 的工作方式就像所有与范围 InRequest 绑定的类型都是 InTransientScope;每次都会创建一个新实例。
在我从 NinjectModule 继承的类中,我有一个像这样的简单绑定:
Bind<ViewModel.Activity>().ToSelf().InRequestScope();
在我的控制器中,我有 2 个带有 Ninject 属性的 ViewModel.Activity 类型的属性。
[Inject]
public ViewModel.Activity Activity { get; set; }
[Inject]
public ViewModel.Activity Activity1 { get; set; }
如果我在调试模式下查看这两个属性的 HashCode 的值,它们都有不同的值,但 HttpContext 是相同的;我有同样的要求。
我错过了如何正确使用新版本的 Ninject.Web.Common.InRequestScope 和新版本的 Ninject 3?
非常感谢你。