2
我試圖做到以下幾點:使用Ninject WhenInjectedInto
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>
。
我想如果我更換這些倉庫的新「虛擬」 IOrderUnitOfWork
,IInvoiceUnitOfWork
和IPayslipUnitOfWork
接口,簡單地繼承IUnitOfwork
與那些在Ninject的配置綁定,那麼它應該工作IUnitOfWork
構造放慢參數,但我不想創建空的虛擬接口,只是爲了獲得Ninject工作:(
我一直在尋找類似:
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository, InvoiceRepository, PayslipRepository>()
.InRequestScope();
,但不存在了,我找不到任何可鏈接的方法來獲得相同的工作無論是。
您的幫助非常感謝!
這將導致你有一個單一的UnitOfWork對於這顯然是不希望整個應用程序生命週期。 –