2012-10-04 62 views
1

關於此問題的一點背景:在野外,我看到很多依賴某些IUnitOfWork實現的服務。當我檢查這些應用程序的ninject綁定時,我注意到它們非常簡單,因爲IUnitOfWork通常只有一個綁定。如何:Ninject綁定(工作單元,工廠和服務)

我的應用程序不幸必須有2個IUnitOfWork綁定。服務A和B將使用指向我們的暫存數據庫的工作單元,而服務C和D將使用指向我們的生產數據庫的工作單元。

我能現在設置一個名爲綁定服務A和B,然後創建綁定IUnitOfWork像這樣做的權利:

Kernel.Bind<IUnitOfWork>() 
      .To<StagingUnitOfWork> 
      .WhenParentNamed("ServiceA") 

kernel.Bind<IServiceA>() 
      .To<ServiceA> 
      .Named("ServiceA") 

不過,我不喜歡我怎麼樣m將不得不爲「ServiceB」創建IUnitOfWork的另一個綁定。我是否需要「吮吸」並使用這種方法?

注:我想繼續我的班無塵注塑屬性等

回答

1

我想這是你所擁有的唯一途徑。

kernel.Bind<IUnitOfWork>().To<StagingUnitOfWork>().WhenInjectedInto<ServiceA>(); 
kernel.Bind<IUnitOfWork>().To<StagingUnitOfWork>().WhenInjectedInto<ServiceB>(); 
kernel.Bind<IUnitOfWork>().To<ProductionUnitOfWork>().WhenInjectedInto<ServiceC>(); 
kernel.Bind<IUnitOfWork>().To<ProductionUnitOfWork>().WhenInjectedInto<ServiceD>(); 
+0

我傾向於認同這是我發現的唯一選項之一。我將繼續向您提供答案。 – BlakeH