2009-11-10 13 views
5

¿Cómo puedo evitar que el MEF para cargar los módulos duplicados en el caso de la presencia de 2 copias de la misma Asamblea (tal vez por error)¿Cómo se pueden evitar los duplicados de módulos con MEF?

  • Assembly1.dll

  • Assembly2.dll (copia de Asamblea1)

    [ImportMany] 
    public IList<IModule> Modules { get; private set; } 
    
    public void BuildUp() 
    { 
        Modules = new List<IModule>(); 
    
        var catalog = new DirectoryCatalog(@".\Modules"); 
        var container = new CompositionContainer(catalog); 
    
        container.ComposeParts(this); 
    } 
    

Respuesta

2

lugar de utilizar un DirectoryCatalog, utilice un AggregateCatalog. Deberá escribir un código que examine todos los Ensambles en el directorio de módulos, averigüe si el actual es un duplicado de uno que ya ha procesado, y si no, crea un Catálogo de ensamblaje para ese Ensamblaje y lo agrega al Catálogo agregado.

No estoy seguro de qué lógica sería capaz de usar para detectar que dos DLL con diferentes nombres son el "mismo" ensamblado.

+0

Necesito evitar implementaciones de tipos duplicados de IModule que MEF está cargando. Gracias lo intentaré de esta manera. –

Cuestiones relacionadas