В прошлом я использовал быстрые подвески, которые представляют собой контроллер ActionScript 3 IoC.По сути, в первой версии switfsuspender было что-то похожее на ядро Ninject, которое называлось инжектором.
Если бы я хотел создать инжектор приложения (скажем, с наиболее подходящими сопоставлениями, которые будут использоваться в приложении), у меня быловнедрить сам инжектор в классы приложения.
Теперь мне интересно, какова практика использования kernel.get <> среди нескольких классов в приложении.Стоит ли вставлять само ядро?
Лично я предпочел бы использовать kernel.inject, но если я могу сделать kernel.inject, я действительно могу вручную ввести зависимости, что, вероятно, лучше (поцелуй).
Контрольные примеры хороши, но они далеки от реальных практических вопросов, поэтому я надеюсь, что вы можете помочь мне прояснить этот момент.Спасибо.
Редактировать: Я заметил, что некоторые люди говорят о "корневом контейнере". Кажется, это концепция, которую я ищу.Как мне настроить корневой контейнер и сообщить об этом другим классам приложений?
Edit2 Пример кода (пожалуйста, прости за ошибки, это только для примера):
class SomeClass
{
public SomeClass()
{
Command cmd = new Command();
cmd.execute();
}
}
class SomeOtherClass:ISomeOtherClass
{
public void allright()
{
//right
}
}
class Command
{
ISomeOtherClass dependency;
void execute()
{
dependency.allright();
}
}
Program.Main()
{
IKernel kernel = new StandardKernel();
kernel.Bind<SomeClass>().ToSelf().InSingletonScope();
kernel.Bind<ISomeOtherClass>().To<SomeOtherClass>();
SomeClass sc = kernel.Get<SomeClass>();
}
Я не зналпроверьте это еще, потому что я все еще борюсь с некоторыми проблемами инициализации, но мой вопрос, как командный класс может знать о SomeOtherClass?Моя текущая гипотеза состоит в том, чтобы внедрить ядро в SomeClass и использовать метод Inject.