У меня есть класс с зависимостями, которые я связал с Ninject.
public interface IFoo {}
public class MyObject {
[Inject]
IFoo myfoo;
}
В реальной реализации я использую инъекцию свойств, но для быстрой иллюстрации я добавлю в поле. Как я понимаю, вместо новых экземпляров MyObject, для правильного внедрения зависимостей мне нужно использовать
kernel.Get<MyObject>()
Однако я спотыкаюсь о том, что MyObject будет использоваться только в контексте библиотеки классов. Цель состоит в том, чтобы конечные приложения создавали свои собственные модули и передавали их в экземпляр ядра для гидратации. Учитывая это, каков вообще самый прагматичный способ приблизить появление общего экземпляра ядра Ninject к моей библиотеке классов, чтобы экземпляры MyObject (и других подобных случаев) могли быть гидратированы?
Мой первый уклон - это своего рода фабрика, которая усваивает одноядерное ядро, которое сами приложения должны гидратировать / инициализировать при загрузке модуля.
Так в RandomService.cs
var myKernel = NinjaFactory.Unleash();
var myobj = myKernel.Get<MyObject>();
myobj.foo();
Прежде чем я зайду слишком далеко по этому пути, мне нужно проверить здравомыслие, чтобы убедиться в правильности мышления или в том, что нет чего-то другого, чего я упускаю. Я, очевидно, новичок в IoC и чувствую, что начинаю понимать основы, но не обязательно лучшие способы использования в реальных условиях.