关于这个问题的一点背景:在野外,我看到很多服务依赖于 IUnitOfWork 的某些实现。当我检查这些应用程序的 ninject 绑定时,我注意到它们非常简单,因为 IUnitOfWork 通常只有一个绑定。
不幸的是,我的应用程序必须为 IUnitOfWork 提供 2 个绑定。服务 A 和 B 将使用一个指向我们的暂存数据库的工作单元,而服务 C 和 D 将使用一个指向我们的生产数据库的工作单元。
我现在可以通过为服务 A 和 B 设置命名绑定,然后为 IUnitOfWork 创建绑定,如下所示:
Kernel.Bind<IUnitOfWork>()
.To<StagingUnitOfWork>
.WhenParentNamed("ServiceA")
kernel.Bind<IServiceA>()
.To<ServiceA>
.Named("ServiceA")
但是,我不喜欢必须为“ServiceB”的 IUnitOfWork 创建另一个绑定。我只需要“接受”并使用这种方法吗?
注意:我想保持我的类没有注入属性等。