gaurav.s23 Ответов: 1

Есть "ошибка привязки совпадений", я не знаю, где я сделал что-то не так?


Ошибка:
Error activating IProductRepository
No matching bindings are available, and the type is not self-bindable.
Activation path:
 2) Injection of dependency IProductRepository into parameter productRepository of constructor of type ProductController
 1) Request for ProductController

Suggestions:
 1) Ensure that you have defined a binding for IProductRepository.
 2) If the binding was defined in a module, ensure that the module has been loaded into the kernel.
 3) Ensure you have not accidentally created more than one kernel.
 4) If you are using constructor arguments, ensure that the parameter name matches the constructors parameter name.
 5) If you are using automatic module loading, ensure the search path and filters are correct.


Что я уже пробовал:

Мой код привязки в классе custome resolver:
частное ядро IKernel;
public NinjectDependencyResolver(IKernel kernelParam)
{
this. kernel = kernelParam;
AddBindings();
}
публичный объект GetService(тип serviceType)
{
верните ядро.TryGet(serviceType);
}

public IEnumerable & lt;object & gt; GetServices(тип serviceType)
{
верните ядро.Способность(тип сервиса);
}

частные пустые надстройки()
{
// поместите привязки сюда

Макет&ЛТ;iproductrepository&ГТ; макет = новый макет&ЛТ;iproductrepository&ГТ;();
издеваться.Настройки(P =&ГТ; п.Продукции).Возврат (новый список & lt;product>
{
новый продукт {название = "HP Elite 3", Цена=800,50 м },
новый продукт {название = "HP Spectra", цена=1200.50 м },
новый продукт {название = "лазерный принтер HP", цена=400,50 м }
});
ядра.Привязать&ЛТ;iproductrepository и GT;().ToConstant(макет.Объект);
}

В ninjectWebCommon.Cs файл:
частных статических недействительным RegisterServices(ядра IKernel )
{
DependencyResolver.SetResolver (новый NinjectDependencyResolver (ядро));
}

IProductRepository Интерфейс:
IEnumerable & lt;product & gt; Products { get;}

Контроллер Качан :
собственный репозиторий IProductRepository ;
public ProductController(IProductRepository productRepository)
{
this. repository = productRepository;
}
// GET: продукт
список public ViewResult()
{
смотреть возвращение(репозитория.Продукты);
}

1 Ответов

Рейтинг:
2

gaurav.s23

Я изменил операторы с полным именем, и это сработало. Но я не понял, хотя я использовал операторы using поверх пространств имен, почему это не сработало??

In ninjectWebCommon.Cs file:
private static void RegisterServices(IKernel kernel)
{
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
} 


изменено на :

Системы.Веб.В MVC.DependencyResolver.SetResolver(new ProjectNameSpaces.NinjectDependencyResolver (ядро));


Graeme_Grant

Пожалуйста, не отвечайте на свой собственный вопрос решением, а затем примите его как действительное решение. Это считается респектабельным фермерством и может привести к тому, что вы будете забанены, если продолжите. Вместо этого обновите свой вопрос.