Я новичок в MVC, поэтому я использую пример книги. Но когда я запускаю программу, она выдает ошибку: Ошибка активации IProductRepository Нет доступных привязок, и тип не является самопривязываемым. Путь активации...
Я прочитал кучу статей и других ошибок, подобных этой, но ни одна из них не помогла. Почему так происходит, если все так же, как в книжном примере? Пожалуйста, некоторая помощь будет очень признательна.
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
}
protected override IController GetControllerInstance(RequestContext requestContext,
Type controllerType)
{
return controllerType == null
? null
: (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IProductRepository>().To<EFProductRepository>();
}
}
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}
IProductRepository.cs
public interface IProductRepository
{
IQueryable<Product> Products { get; }
}
EFProductRepository.cs
public class EFProductRepository : IProductRepository
{
private EFDbContext context = new EFDbContext();
public IQueryable<Product> Products
{
get { return context.Products; }
}
}
public class EFDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
Продуктконтроллер.cs
public class ProductController : Controller
{
private IProductRepository repository;
public ProductController(IProductRepository repoParam)
{
repository = repoParam;
}
public ViewResult List()
{
return View(repository.Products);
}
}