Вам необходимо добавить AutoControllerModule в список модулей, который вы указываете при создании ядра, покажите ниже:
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(
new BaseModule(),
new AutoControllerModule(Assembly.GetExecutingAssembly())
);
return (kernel);
}
AutoControllerModule является частью поддержки MVC в Ninject 1.x. Он сканирует сборку, которую вы предоставляете своему конструктору, для классов контроллеров MVC и автоматически связывает их. В коде вы правильно связали свой репозиторий, но Ninject не отвечает за активацию ваших контроллеров. Для того, чтобы ваш репозиторий был внедрен в экземпляр класса HomeController , Ninject должен отвечать за создание и активацию контроллеров. Без AutoControllerModule MVC остается ответственным за создание контроллеров; следовательно, Ninject никогда не получает возможности ввести какие-либо участники. Как только Ninject отвечает за создание и активацию контроллеров, инъекция произойдет, как и ожидалось.
Думайте о AutoControllerModule как об обнаружении всех контроллеров и генерации кода, подобного этому (HomeController используется в качестве примера):
Bind<HomeController>.ToSelf();