Зависимости загрузки Autofac от ссылочных и не ссылочных сборок
Я видел много вопросов, которые спрашивают, как загрузить все ссылочные сборки, даже если они не используются напрямую, но я хотел бы сделать этот шаг дальше. Я создаю сервис и интерфейс, который может быть расширен, но я хочу расширить Sender/Receiver дополнительными типами, например: интерфейс отвечает за отправку SMS-сообщений и может иметь разные адаптеры, скажем, у меня два разных приложения. которые хотят использовать SMS, каждый из них будет иметь свою собственную реализацию ISmsAdapter
а также ISmsReplyAdapter
Служба может не обязательно ссылаться на сборки (приложение содержит Службу Windows и Службу WebAPI для получения ответов).
То, что я хотел бы сделать, это не только зарегистрировать мои модули автозапуска, которые находятся в сборках, на которые есть ссылки, но также зарегистрировать модули в сборках, которые находятся, например, в определенной папке, такой как /bin/plugins или что-то подобное
Я не смог найти ничего, что относится к этому, кроме Caliburn.Micro
который имеет DirectoryCatalog
который делает что-то похожее на то, что я хочу
Кто-нибудь знает, как я мог бы добиться этого с Autofac, пожалуйста?
1 ответ
Это не вопрос Autofac, а вопрос рефлексии. Autofac не волнует, как вы загружаете сборки.
Загрузите ваши сборки через отражение, используя что-то вроде Assembly.LoadFrom, а затем используйте сканирование сборок в Autofac или продолжайте использовать отражение, чтобы вручную найти определенные типы в сборках (например, типы, которые наследуются от модуля, типы с определенным соглашением об именах, типы, которые реализуют определенный интерфейс и т. д.) и индивидуально зарегистрируйте типы в цикле for.