2010-11-22 11 views
16

¿Qué es AggregateCatalog? ¿Qué significa cuando construyes un new AggregateCatalog()? ¿Qué significa cuando agrega ensamblajes al catálogo, por ejemplo, catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? Aparte de ensamblajes, ¿qué puedes agregar al catálogo? cualquier conocimiento general relacionado con esto sería útil, también (soy un novato total)¿Qué es AggregateCatalog?

Respuesta

16

AggregateCatalog en MEF, básicamente, le permite recopilar múltiples catálogos de extensiones. Cuando llama al new AggregateCatalog(), básicamente está instanciando una nueva colección de catálogos (no necesariamente completada) que puede contener varias instancias de ComposablePartCatalog, que puede contener varias partes.

Considérelo una clase que lo ayuda a recopilar piezas de varios conjuntos.

Los ensambles son solo una forma de enviar partes a la aplicación de llamada. Puede pasar partes directamente desde el ensamblaje existente.

Para obtener más información acerca de los catálogos, recomendaría leer this.

+1

¿Hay una unidad equivalente a esto? – Vaccano

+0

¿Te importaría contrastar eso con el ModuleCatalog? Parecen hacer lo mismo. –

4

Mef tiene una pequeña curva de aprendizaje: acceda a los documentos en mef.codeplex.com al menos una vez. O prueba los screencasts si realmente estás presionado por el tiempo.

La idea es que un catálogo es un diccionario de piezas exportadas (objetos para ser inyectado) o partes que necesitan las importaciones (que inyecta necesidad objetos) .. El catálogo se puede rellenar de múltiples maneras (por lo tanto the diff Catalog derivations) - a partir de un Directorio (todos los asm en un directorio) o un conjunto Específico.

A continuación puede crear un catálogo compuesto, p. desea crear un solo diccionario que contenga todos los objetos exportados de DirA y de este ensamblaje específico ubicado en DirB. En este caso, puede crear catálogos individuales y luego un catálogo compuesto que fusiona los dos. Ahora consume este diccionario fusionado en su código para solicitar importaciones/exportaciones.