Использование Nininject MVC с библиотеками классов

Я довольно плохо знаком с фреймворками IoC, поэтому прошу прощения за терминологию.

Итак, у меня есть проект MVC со ссылками Nininject MVC. У меня есть другие библиотеки классов в моем проекте, например Слой домена, я хотел бы иметь возможность использовать инфраструктуру Ninject там, но все мои привязки находятся вNinjectWebCommon.cs подApp_Start папка в проекте MVC:

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IHardwareService>().To<WindowsHardwareService>();
    kernel.Bind<IStatusApi>().To<StatusApiController>();
}

В настоящее время в моей библиотеке классов я использую инъекцию конструктора, но иногда мне приходится жестко кодировать зависимости:

var service = new WindowsHardwareService();

Когда я хотел бы иметь возможность сделать следующее:

IKernel kernel = new StandardKernel(.....);
var context = kernel.Get<IHardwareService>();

Я не делал следующее, потому что у меня нет никаких модулей? Вся прочитанная мной документация в основном предназначена для обычной библиотеки Ninject, а не для версии MVC.

Что мне нужно сделать, и как я могу использовать обычную библиотеку Ninject с версией MVC?

Обновить

Вот что я попробовал:

Цель этого состоит в том, чтобы каждый проект мог загрузить модуль и получить текущий введенный интерфейс.

App_Start / NinjectWebCommon.cs (В проекте MVC)

private static void RegisterServices(IKernel kernel)
{
    var modules = new IoCModules();
    var newKernal = modules.GetKernel();

    kernel = newKernal;
}

IoCModules.cs (В проекте Project. Ioc)

public class IoCModules
{
    public IKernel GetKernel()
    {
        var modules = new CoreModule();
        return modules.Kernel;
    }
}

CoreModule.cs (В проекте Project.IoC.Modules) <- это то, где все ссылки на все проекты, это обойти любые проблемы круговой зависимости.

public class CoreModule : NinjectModule
{
    public override void Load()
    {
       Bind<IHardwareService>().To<WindowsHardwareService>();
       Bind<IStatusApi>().To<StatusApiController>();
    }
}

Но в настоящее время я получаю следующее:

Ошибка активации IHardwareService

Соответствующие привязки недоступны, а тип не является самосвязываемым. Путь активации:

2) Внедрение зависимости IHardwareService в службу параметров конструктора типа DashboardController

1) Запрос на DashboardController

Предложения:

1) Убедитесь, что вы определили привязку для IHardwareService.

2) Если привязка была определена в модуле, убедитесь, что модуль был загружен в ядро.

3) Убедитесь, что вы случайно не создали более одного ядра.

4) Если вы используете аргументы конструктора, убедитесь, что имя параметра соответствует имени параметра конструкторов.

5) Если вы используете автоматическую загрузку модуля, убедитесь в правильности пути поиска и фильтров.

Ответы на вопрос(1)

Ваш ответ на вопрос