2010-11-22 13 views
16

Che cos'è AggregateCatalog? Cosa significa quando costruisci un new AggregateCatalog()? Cosa significa quando si aggiungono assiemi al catalogo, ad es. catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? Oltre agli assemblaggi cosa si può aggiungere al catalogo? qualsiasi conoscenza generale relativa a questo sarebbe utile, anche (io sono un noob totale)Che cos'è AggregateCatalog?

risposta

16

AggregateCatalog in MEF fondamentalmente consente di raccogliere più cataloghi di estensione. Quando chiami new AggregateCatalog(), stai essenzialmente creando un'istanza di una nuova raccolta di cataloghi (non necessariamente popolata) che può contenere più istanze di ComposablePartCatalog, che può contenere più parti.

Consideralo una classe che ti aiuta a raccogliere parti da più set.

Gli assembly sono solo un modo per inviare parti all'applicazione chiamante. È possibile passare parti direttamente dall'assieme esistente.

Per ulteriori informazioni sui cataloghi, si consiglia di leggere this.

+1

Esiste un'unità equivalente? – Vaccano

+0

Ti dispiacerebbe contrapporre questo al ModuleCatalog. Sembrano fare la stessa cosa. –

4

Mef ha una piccola curva di apprendimento - passare attraverso i documenti su mef.codeplex.com almeno una volta. Oppure prova uno screencast se sei davvero pigiato per il tempo.

L'idea è che un catalogo è un dizionario di parti esportate (oggetti da iniettare) o parti che necessitano di importazioni (che necessitano di oggetti iniettati). Il catalogo può essere popolato in più modi (da qui the diff Catalog derivations) - da una directory (tutto asm in una directory) o un assembly specifico.

Successivamente è possibile creare un catalogo composito, ad es. si desidera creare un singolo dizionario che contenga tutti gli oggetti esportati da DirA e da questo assembly specifico che si trova in DirB. In questo caso, è possibile creare singoli cataloghi e quindi un catalogo composito che unisce i due. Ora si utilizza questo dizionario unito nel codice per chiedere importazioni/esportazioni.