Существует огромное количество специальных плагинов для C #. Один из них описан в Плагин Архитектура с использованием C # (в Код проекта ). Общий подход заключается в том, что хост-приложение публикует сборку с интерфейсами. Он перечисляет через папку и находит сборки, которые определяют класс, реализующий его интерфейсы, загружает их и создает экземпляры классов.
На практике вы хотите сделать больше. Лучше всего, если хост-приложение определяет два интерфейса, IHost и IPlugIn. Интерфейс IHost предоставляет сервисы, на которые плагин может подписаться. IPlugIn создается с использованием IHost.
Чтобы загрузить плагин, вы должны сделать больше, чем просто получить плагин. Вы должны перечислить все загружаемые плагины. Построить их каждый. Спросите их, могут ли они бежать. Попросите их экспортировать API в хост. Попросите их импортировать API с хоста. Плагины должны иметь возможность спрашивать о существовании других плагинов.
Таким образом, плагины могут расширять приложение, предлагая больше API.
Подключаемые модули должны включать события. Таким образом, плагины могут контролировать процесс загрузки и выгрузки плагинов.
В конце света вы должны предупредить плагины, что они уйдут. Тогда убери их.
Это оставит вас с приложением, которое может быть написано в крошечной среде и реализовано полностью в плагинах, если вы этого хотите.
В качестве дополнительного бонуса вы также должны сделать так, чтобы в папке плагинов вы разрешали ярлыки для плагинов. Это позволяет вам написать ваше приложение и передать его кому-то еще. Они могут создать плагин в своей среде разработки, создать ярлык для него в папке плагинов приложения и не беспокоиться о развертывании после каждой компиляции.