Hay una gran cantidad de sistemas ad-hoc enchufables para C#. Uno se describe en Plugin Architecture using C# (en The Code Project). El enfoque general es que la aplicación host publica un ensamblaje con interfaces. Se enumera a través de una carpeta y encuentra conjuntos que definen una clase que implementa sus interfaces y las carga y crea instancias de las clases.
En la práctica, desea hacer más. Lo mejor es que la aplicación de host defina dos interfaces, un IHost y un IPlugIn. La interfaz de IHost proporciona servicios a los que un complemento puede suscribirse. El IPlugIn se construye tomando un IHost.
Para cargar un complemento, debe hacer más que simplemente obtener un plug-in. Debe enumerar todos los complementos que se pueden cargar. Constrúyelos a cada uno. Pregúntales si pueden correr. Pídales exportar API en el host. Pídales que importen API del host. Los complementos deberían poder preguntar sobre la existencia de otros complementos.
De esta manera, los complementos pueden ampliar la aplicación al ofrecer más API.
Los plugins deben incluir eventos. De esta forma, los complementos pueden monitorear el proceso de carga y descarga de los complementos.
En el fin del mundo, debe advertir a los complementos que se van a ir. Entonces sácalos.
Esto le dejará con una aplicación que se puede escribir en un marco pequeño y se puede implementar completamente en complementos si lo desea.
Como una ventaja adicional, también debe hacerlo de modo que en la carpeta de complementos, resuelva los accesos directos a los complementos. Esto le permite escribir su aplicación y entregársela a otra persona. Pueden crear un complemento en su entorno de desarrollo, crear un acceso directo a él en la carpeta de complementos de la aplicación y no tener que preocuparse por la implementación después de cada compilación.
¿Sabe cuánto de este MEF es capaz de hacer? –