この問題の背景: 実際には、IUnitOfWork の実装に依存する多くのサービスが見られます。これらのアプリケーションの ninject バインディングを調べると、通常は IUnitOfWork のバインディングが 1 つしかないため、非常に単純であることがわかります。
残念ながら、私のアプリケーションには 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 用に別のバインディングを作成する方法が気に入りません。「それを吸う」だけで、このアプローチを使用する必要がありますか?
注:クラスにインジェクション属性などをきれいに保ちたい.