我正在尝试根据本教程实现通用存储库和工作单元模式。除了这些模式之外,我还使用 Ninject 为我的 Web 应用程序进行依赖注入。
我使用的特定绑定在这里:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(IGenericRepository<>))
.To(typeof(GenericRepository<>)).InSingletonScope();
kernel.Bind<IUnitOfWork>()
.To<UnitOfWork>();
}
但是根据教程,我需要将 传递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
实例。