Может ли NInject загружать модули / сборки по требованию?

Есть ли средства в NInject, которые позволят мне загружать сервисы из других модулей (сборок) по требованию, как это делается в Unity?

3 ответа

Я уверен, что это то, что вы ищете:

var kernel = new StandardKernel();
kernel.Load( Assembly.Load("yourpath_to_assembly.dll");

Если вы посмотрите на KernelBase с отражателем в Ninject.dll, то увидите, что этот вызов рекурсивно загрузит все модули в загруженных сборках (метод Load принимает IEnumerable).

public void Load(IEnumerable<Assembly> assemblies)
{
    foreach (Assembly assembly in assemblies)
    {
        this.Load(assembly.GetNinjectModules());
    }
}

Я не совсем понимаю, что вы подразумеваете под "Like Unity", но вы можете сделать несколько разных вещей для загрузки сборок. Сам Ninject по умолчанию будет загружать локальные сборки для расширений / плагинов. Ninject также может загружать классы NinjectModule из сборок. Если вы хотите сделать что-то более сложное, вы можете использовать проект https://github.com/ninject/Ninject.Extensions.Conventions, чтобы выполнить множество различных операций сканирования и привязки типов.

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

Есть много других вопросов по этому поводу, например, Использование Ninject в плагине, подобном архитектуре.

Другие вопросы по тегам