2012-10-04 38 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