このチュートリアルに従って、一般的なリポジトリと作業単位のパターンを実装しようとしています。パターンに加えて、Ninject を使用して Web アプリの依存性注入も行いました。
私が使用した特定のバインディングは次のとおりです。
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(IGenericRepository<>))
.To(typeof(GenericRepository<>)).InSingletonScope();
kernel.Bind<IUnitOfWork>()
.To<UnitOfWork>();
}
ただし、チュートリアルによると、すべてのリポジトリが次のように 1 つのインスタンスのみを共有するように、クラスのDbContext
各リポジトリ プロパティにを渡す必要があります。UnitOfWork
DbContext
public GenericRepository<Course> CourseRepository
{
get
{
if (this.courseRepository == null)
{
this.courseRepository = new GenericRepository<Course>(context);
}
return courseRepository;
}
}
問題は、インスタンスが Ninject によって注入されるたびに、DbContext
インスタンス (UnitOfWork
クラスに存在する) をコンストラクターに渡す方法です。メソッドについては知っていますが、その時点でインスタンスにアクセスできないため、呼び出しで使用できません。GenericRepository
GenericRepository
WithConstructorArgument
kernel.Bind
DbContext