私は次のことをしようとしています:
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>
IUnitOfWork
これらのリポジトリのコンストラクターパラメーターを新しい 'dummy'IOrderUnitOfWork
に置き換え、 Ninject の構成内のパラメーターを単に継承してバインドするインターフェースを置き換えるIInvoiceUnitOfWork
と、機能するはずですが、Ninject を機能させるためだけに空のダミーインターフェースを作成したくありません:(IPayslipUnitOfWork
IUnitOfwork
私は次のようなものを探していました:
kernel.Bind<IUnitOfWork>().To<UnitOfWork<OrderDbContext>>().WhenInjectedInto<OrderRepository, InvoiceRepository, PayslipRepository>()
.InRequestScope();
しかし、それは存在せず、同じことを行うための連鎖可能な方法も見つかりませんでした。
あなたの助けに感謝します!