Кто-то должен загрузить DLL-файлы, а кто-то сможет подключить IoC.
Как правило, загрузка DLL происходит автоматически, а проводка IoCпроисходит почти жестко.
Вы можете загружать библиотеки динамически: вы можете написать код, который пытается загрузить каждую DLL в заданную папку и вызвать какой-то метод GetLibraryDescriptor
.Этот метод говорит вам, что библиотека обеспечивает реализацию, скажем, ISomeInterface
.Теперь вы можете попросить DLL создать экземпляр объекта этого класса, который он предоставляет.Вам, вероятно, придется связать это создание с IoC.Я считаю, что такой дизайн лучше подходит для поиска сервисов.
Все это имеет смысл для программного обеспечения с термоусадочной пленкой, но я не вижу много преимуществ для веб-программного обеспечения.
Единственноепричина не ссылаться на другие библиотеки, которые я вижу, состоит в том, чтобы убедиться, что никто не использует напрямую или не обращается к коду, который там объявлен - утомительная задача, иногда невозможная цель, которая переносит инкапсуляцию на неправильный уровень.Если ваши классы хорошо инкапсулированы, в этом нет необходимости.