Есть ли объекты в NInject, которые позволят мне загружать сервисы из других модулей (сборок) по запросу, как это делается в Unity?Может ли NInject загружать модули/сборки по требованию?
ответ
Если вы имеете в виду загрузку сборок нестатически из коробки, нет, это не так.
Есть много других вопросов по этому поводу, например, Using Ninject in a plugin like architecture
Я уверен, что это то, что вы ищете:
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 из сборок. Если вы хотите сделать что-то более сложное, вы можете использовать проект Ninject.Extensions.Conventions, чтобы выполнить множество разных операций сканирования и привязки типов.
Не могли бы вы предоставить более подробную информацию о том, как сделать Ninject «загружать классы NinjectModule из сборок»? Вики-страница Ninject охватывает довольно простой материал. –
Итак, я получил его сейчас, я смешал версии Ninject в своем проекте. –
Предоставлено ссылка на GitHub. Фактическая ссылка: https://github.com/ninject/Ninject.Extensions.Conventions. – realsonic
Думаю, я не понимаю, что вы имеете в виду. Как вы «загружаете службы из других сборок» в Unity? – Konamiman