我想做以下几件事:
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中。
相反,正在发生的是为每个存储库创建一个新实例 of UnitOfWork<OrderDbContext>。
我认为,如果我将这些存储库上的IUnitOfWork构造函数参数替换为新的“虚拟”IOrderUnitOfWork、IInvoiceUnitOfWork和IPayslipUnitOfWork接口,这些接口只会继承IUnitOfwork并绑定到Ninject配置中的接口,那么它应该可以工作,但我不想创建空的虚拟接口,只为了让Ninject工作:(
我在找这样的东西:
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository, InvoiceRepository, PayslipRepository>()
.InRequestScope();但这是不存在的,我也找不到任何可链接的方法来实现同样的工作。
非常感谢你的帮助!
发布于 2013-11-03 19:06:04
尝试创建一个新的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();https://stackoverflow.com/questions/19699075
复制相似问题