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