Вам нужно начать подход основанный поверхностью стыка.
Создайте поверхность стыка будет снабжена plugins. Поверхность стыка должна быть имеющейся в главной программе.
Теперь создайте plugins снабжают эту поверхность стыка.
В главной программе (где определение интерфейса имеющееся), напишите Кодего для того чтобы просмотреть архивы DLL в директории Plugins sub. Using отражение, получите снабженные детали поверхности стыка, и если они сопрягают, то нагрузите агрегат.
Эта дорога, вы будете создать ваше пожеланное применение.