我正在尝试执行以下操作:
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository>()
.InRequestScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<InvoiceRepository>()
.InRequestScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<PayslipRepository>()
.InRequestScope();
我想在逻辑上发生的是UnitOfWork<OrderDbContext>
为请求创建单个实例,并注入IUnitOfWork
到任何OrderRepository
,InvoiceRepository
或PayslipRepository
.
相反,正在为每个存储库创建一个新实例。UnitOfWork<OrderDbContext>
我认为如果我将IUnitOfWork
这些存储库上的构造函数参数替换为新的 'dummy' IOrderUnitOfWork
,IInvoiceUnitOfWork
以及IPayslipUnitOfWork
简单地继承IUnitOfwork
和绑定 Ninject 配置中的接口的接口,那么它应该可以工作,但我不想创建空的虚拟接口只是为了让 Ninject 工作:(
我正在寻找类似的东西:
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository, InvoiceRepository, PayslipRepository>()
.InRequestScope();
但这不存在,我也找不到任何可链接的方法来获得相同的工作。
非常感谢您的帮助!