¿Cuál es la diferencia entre CompositionBatch y catálogos?

Estoy tratando de entender a MEF, y una cosa con la que estoy luchando es CompositionBatch.

CompositionBatch parece ser una forma de agregar o eliminar exportaciones al sistema MEF, pero aparentemente no puede eliminar algo que se agregó a través de un catálogo, por lo que tiene una utilidad limitada. También, por alguna razón, opera a nivel de contenedor, en lugar de a nivel de catálogo con todo lo demás que registra tipos en MEF.

Por lo que puedo decir, CompositionBatch es solo una forma redundante de hacer lo que ya podría hacer con los catálogos. Si deseo registrar dos tipos nuevos después de que mi aplicación se haya iniciado, no necesito CompositionBatch; También podría pasar un AggregateCatalog a mi contenedor, y luego, cuando esté listo, crear un TypeCatalog a partir de los dos nuevos tipos que quiero registrar, agregarlo al AggregateCatalog, y todo funcionaría. Y, sin embargo, está CompositionBatch, que resuelve este problema del catálogo agregando métodos al contenedor.

¿Qué me estoy perdiendo? ¿Por qué existe CompositionBatch? ¿De hecho, hace algo que no puedes hacer con lo que ya estaba allí? ¿Por qué necesitamos una forma de hacer lo mismo a nivel de contenedor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta