Ninject中的以下代码是否会对两个绑定使用相同的UnitOfWork实例,或者每个请求会创建两个总实例,每个绑定一个?
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
Bind<UnitOfWork>().To<UnitOfWork>().InRequestScope();
如果前者不是这样,我怎样才能对IUnitOfWork和UnitOfWork发出请求,为同一个请求激活相同的UnitOfWork实例?
我有一个模块,其中一个内部类依赖于IUnitOfWork特定实现中的属性,这也是我需要自绑定的原因。
答案 0 :(得分:3)
Ninject 3.0.0允许你
Bind<UnitOfWork, IUnitOfWork>().To<UnitOfWork>().InRequestScope();
答案 1 :(得分:2)
在回答您的问题时,这些将根据您请求IUnitOfWork或UnitOfWork的情况创建不同的实例。要解决此问题,请添加ContextPreservation扩展并使用以下绑定:
Bind<UnitOfWork>().ToSelf().InRequestScope();
this.BindInterfaceToBinding<IUnitOfWork, UnitOfWork>();
Heres Remos发布了为什么要这样做以及其他一些替代方案,如果您不想导入库http://www.planetgeek.ch/2010/12/08/ninject-extension-contextpreservation-explained/