Другие люди упомянули Delegates
, и если вы сами управляете всем кодом и его функциями, то это лучший подход, однако, если вы действительно хотите использовать систему на основе плагинов , так что ваше приложение предоставляет некоторый API, и вы позволяете сторонним разработчикам писать сборку (обычно DLL), которая будет загружаться и функциональность, используемая вашим приложением, вы можете использовать ряд методов.
Общий подход заключается в том, что ваше приложение (хост-приложение) публикует / предоставляет сборку с определенными интерфейсами. Другие разработчики будут писать свои сборки и обеспечивать, чтобы их классы реализовывали интерфейсы вашего приложения. Затем хост-приложение обычно выполняет перечисление через папку, содержащую сборки «plug-in», и находит сборки, которые определяют класс, реализующий его интерфейс. Затем хост-приложение будет динамически загружать эти сборки и создавать экземпляры классов.
Хорошее руководство по этому общему подходу можно найти здесь:
Плагин Архитектура с использованием C #
Managed Extensibility Framework также является еще одним вариантом для архитектуры плагинов общего назначения, но может оказаться излишним для того, чего вы пытаетесь достичь.