В отношении:
Каковы последствия и предлагаемые сценарии для использования?
Обычно, если я использую Assembly.Load()
, это потому, что яразработка подключаемой системы.Динамические ссылки облегчают включение сборок, которые не обязательно являются частью моей сборки.
Создание типов из динамически загруженной сборки требует хотя бы некоторого отражения.Необходимое количество отражений можно уменьшить, гарантируя, что динамически загружаемые типы реализуют некоторый известный интерфейс или базовый класс (из статически загруженной сборки).
Короче говоря, использование динамически загружаемых сборок - большая работа;однако это может сделать приложение более гибким, позволяя пользователям разрабатывать подключаемые модули.Просто взвесьте компромисс между ожидаемой гибкостью динамических ссылок (что может и не быть обязательным) и поддержкой Visual Studio во время разработки статических ссылок.
Практика, заслуживающая рассмотрения при создании плагинаархитектура заключается в загрузке сборок в их собственных доменах приложений.Это позволяет вам иметь более точный контроль над разрешениями безопасности сборок, которым вы не можете полностью доверять, и обеспечивает дополнительное преимущество, заключающееся в том, что сборки можно выгружать во время выполнения.Лично я нашел работу с доменами приложений трудоемкой;однако, если необходимы преимущества, полезно знать, что там есть домены приложений.