我正在尝试执行以下操作:
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
或{ {1}}。
相反,正在发生的事情是为每个存储库创建了PayslipRepository
的新实例。
我认为如果我将这些存储库上的UnitOfWork<OrderDbContext>
构造函数参数替换为仅仅继承IUnitOfWork
的新“虚拟”IOrderUnitOfWork
,IInvoiceUnitOfWork
和IPayslipUnitOfWork
接口并绑定Ninject的配置然后它应该工作,但我不想创建空的虚拟接口只是为了让Ninject工作:(
我正在寻找类似的东西:
IUnitOfwork
但这不存在,我也找不到任何可链接的方法来实现相同的工作。
非常感谢您的帮助!
答案 0 :(得分:-1)
尝试创建一个新的UnitOfWork并将其作为常量绑定到IUnitOfWork:
UnitOfWork<OrderDbContext> work = new UnitOfWork<OrderDbContext>;
kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<OrderRepository>().InRequestScope();
kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<InvoiceRepository>().InRequestScope();
kernel.Bind<IUnitOfWork>().ToConstant(work).WhenInjectedInto<PayslipRepository>().InRequestScope();