Hola Fede,
Nunca lo hice de forma completa y satisfactoria, pero lo que yo haria es:

- Crear una base o framework de ejecucion, el host de los modulos. Ahi
publicas eventos importantes que van a funcionar como entry points.
- Creas una interfaz de modulo, que va a ser llamada cuando se inicie
el modulo. Con metodos del estilo Start, End, etc...
- Cada modulo se attachea a los eventos del core que cree importantes.

Por ejemplo, un modulo quedaria:

public class XyzModule : IModule
{
      public void Start(IEngine engine)
      {
            engine.HandleSomeImportantEvent += ...;
      }
}

y para subscribirte a eventos de otro modulo, yo creo que lo deberia
conocer aunque sea en parte. Asi que no estaria mal usar una interfaz,
por ejemplo:

ISomeOtherModule otherModule = engine.FindModule<ISomeOtherModule>();
if (otherModule != null)
{
     otherModule.WhenAGuyIsDeleted += ...;
     otherModule.WhenAGuyIsCreated += ...;
     otherModule.WhenAGuyIsModified += ...;
}

Espero que sirva la idea...

Saludos,
Diego


2009/5/14 Federico Lazarte <[email protected]>:
> Gente.
> Tengo el siguiente escenario:
> Una aplicación que empezo siendo una demo, se convirtio en un producto
> complejo y dificil de mantener. La idea ahora es rediseñarlo, y que todo sea
> altamente configurable.
> Por ejemplo:
> El sistema cuenta con varios modulos.
> A modulo principal.
> B modulo secundario 1
> C modulo secundario 2
> D modulo sub-secundario que depende de modulo 2.
> E modulo sub-secundario que depende de modulo 2.
>
> Lo que se quiere es que el aplicativo cuando se ejecute y de acuerdo a un
> xml de configuración, carge los componentes que deba utilizar.
> Por ejemplo, para un cliente en particular, se necesita solo el modulo A, C
> y el módulo E.
> Se va a usar reflection para esto, aunque los problemas son los eventos, por
> ejemplo, el modulo C se subscribe a los eventos del módulo E que son
> incompatibles con los eventos del modulo D.
> Bueno espero haber sido claro.
> Me gustaria tener ideas de que conceptos aplicar, patrones y demas. Luego,
> yo investigo por cuenta propia.
> Gracias.
> ________________________________
> ¿Querés conocerte mejor? ¡Conocé lo que Windows Live tiene especialmente
> para vos!

Responder a