Простая архитектура плагина может определять интерфейс плагина со всеми методами, которые должен реализовать плагин. Плагин обрабатывает события из приложения и может использовать стандартный код приложения, объекты модели и т. Д. Для достижения цели. По сути то же самое, что и форма ASP.NET, за исключением того, что вы переопределяете, а не внедряете.
Никто не учил меня этой части, и я не эксперт, но я чувствую: в общем случае плагин будет менее стабильным, чем его приложение, поэтому приложение всегда должно быть под контролем и давать плагину только периодические возможности действовать. Если плагин может зарегистрировать Observer, то вызовы делегата следует попробовать / перехватить.