Что лучше всего делать при создании экземпляра контейнера Castle Windsor в библиотеке классов?

Мне интересно, где лучшее место, чтобы создать экземпляр контейнера Виндзорского замка, в библиотеке классов.

Должен ли я просто сделать это в конструкторе класса, который я использую, или есть единственная точка входа для сборок, о которых я не знаю?

Благодарю.

2 ответа

Решение

Конфигурация внедренного графа объекта полностью зависит от потребностей приложения, которое фактически использует его. Смысл использования контейнера в том, чтобы иметь возможность настраивать зависимости во время выполнения - библиотека ничего не знает о том, как он будет использоваться.

Библиотечные классы должны быть написаны таким образом, чтобы вы могли использовать любой контейнер, который вам нравится, или инъекцию зависимостей бедняка, по усмотрению потребителя. Привязка библиотеки к контейнеру - это запах.

Я могу сказать, что вы не должны использовать контейнер непосредственно в вашей библиотеке классов. Ваша библиотека классов должна иметь зависимости между классами внутри библиотеки. Приложение (Front-End / корень графа приложений) будет использовать контейнер для разрешения всех зависимостей, в том числе и в вашей библиотеке классов. ИМХО используя IoC внутри библиотеки классов пахнет как ServiceLocator.

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