Что лучше всего делать при создании экземпляра контейнера Castle Windsor в библиотеке классов?
Мне интересно, где лучшее место, чтобы создать экземпляр контейнера Виндзорского замка, в библиотеке классов.
Должен ли я просто сделать это в конструкторе класса, который я использую, или есть единственная точка входа для сборок, о которых я не знаю?
Благодарю.
2 ответа
Конфигурация внедренного графа объекта полностью зависит от потребностей приложения, которое фактически использует его. Смысл использования контейнера в том, чтобы иметь возможность настраивать зависимости во время выполнения - библиотека ничего не знает о том, как он будет использоваться.
Библиотечные классы должны быть написаны таким образом, чтобы вы могли использовать любой контейнер, который вам нравится, или инъекцию зависимостей бедняка, по усмотрению потребителя. Привязка библиотеки к контейнеру - это запах.
Я могу сказать, что вы не должны использовать контейнер непосредственно в вашей библиотеке классов. Ваша библиотека классов должна иметь зависимости между классами внутри библиотеки. Приложение (Front-End / корень графа приложений) будет использовать контейнер для разрешения всех зависимостей, в том числе и в вашей библиотеке классов. ИМХО используя IoC
внутри библиотеки классов пахнет как ServiceLocator.