I am trying to implement the generic repository and unit of work patterns according to this tutorial. In addition to the patterns I have also used Ninject to do dependency injection for my web app.
The specific bindings I used are here:
private static void RegisterServices(IKernel kernel)
{
    kernel.Bind(typeof(IGenericRepository<>))
          .To(typeof(GenericRepository<>)).InSingletonScope();
    kernel.Bind<IUnitOfWork>()
          .To<UnitOfWork>();
}
However according to the tutorial, I need to pass the DbContext to each repository property in my UnitOfWork class so that all repository will share only one DbContext instance like here:
public GenericRepository<Course> CourseRepository
{
    get
    {
        if (this.courseRepository == null)
        {
            this.courseRepository = new GenericRepository<Course>(context);
        }
        return courseRepository;
    }
}
The question is how can I pass the DbContext instance (residing in the UnitOfWork class) to the GenericRepository constructor whenever an instance of GenericRepository is injected by Ninject? I know about the WithConstructorArgument method but I cannot use it in my kernel.Bind calls because I will not have access to the DbContext instances at that time.
 
     
     
    