Ninject-do作用域应用于绑定或目标对象



Ninject中的以下代码会对两个绑定使用相同的UnitOfWork实例吗?还是每个请求总共创建两个实例,每个绑定一个?

Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
Bind<UnitOfWork>().To<UnitOfWork>().InRequestScope();

如果前者不是,我如何请求IUnitOfWork和UnitOfWork都为同一请求激活同一个UnitOfWork实例?

我有一个模块,其中一个内部类依赖于IUnitOfWork的特定实现中的属性,这就是为什么我也需要自绑定。

Ninject 3.0.0允许您进行

Bind<UnitOfWork, IUnitOfWork>().To<UnitOfWork>().InRequestScope();

对于您的问题"否",这些将根据您请求IUnitOfWork还是UnitOfWork创建不同的实例。要绕过此问题,请添加ContextPreservation扩展并使用以下绑定:

Bind<UnitOfWork>().ToSelf().InRequestScope();
this.BindInterfaceToBinding<IUnitOfWork, UnitOfWork>();

下面是雷莫斯关于你为什么这么做的帖子,以及如果你不想导入库的其他选择http://www.planetgeek.ch/2010/12/08/ninject-extension-contextpreservation-explained/

最新更新