How to inject the same instance of a class with Ninject?

346 views Asked by At

I am using Ninject for IoC. I have the following classes.

// Repository
public class EFProductRepository : IProductRepository, IUnitOfWorkRepository
{
  private IUnitOfWork unitOfWork;
  private EFDbContext efDbContext;

  public EFProductRepository(IUnitOfWork uow)
  {
    unitOfWork = uow;
    efDbContext = new EFDbContext();
  }
  //
}

// Controller
public class ProductController : Controller
{
  private IUnitOfWork unitOfWork;
  private IProductRepository productRepository;

  public ProductController(IUnitOfWork uow, IProductRepository repo)
  {
    unitOfWork = uow;
    productRepository = repo;
  }
}

Currently my ninject bindings are as follow which assign new instance of the concrete class for the interface.

ninjectKernel.Bind<IUnitOfWork>().To<UnitOfWork>();
ninjectKernel.Bind<IProductRepository>().To<EFProductRepository>();

using my ninject controller factory, I need to inject same instance of the IUnitOfWork class to the ProductController and EFProductRepository. Please guide me.

0

There are 0 answers