2010-11-22 27 views
16

Was ist AggregateCatalog? Was bedeutet es, wenn Sie eine new AggregateCatalog() konstruieren? Was bedeutet es, wenn Sie Baugruppen zum Katalog hinzufügen, z. B. catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? Was können Sie außer dem Katalog dem Katalog hinzufügen? jedes allgemeine Wissen dazu wäre auch hilfreich (ich bin ein totaler Noob)Was ist AggregateCatalog?

Antwort

16

AggregateCatalog in MEF im Grunde können Sie mehrere Erweiterung Kataloge sammeln. Wenn Sie new AggregateCatalog() aufrufen, implizieren Sie im Grunde eine neue Katalogsammlung (nicht unbedingt ausgefüllt), die mehrere Instanzen von ComposablePartCatalog enthalten kann, die mehrere Teile enthalten können.

Betrachten Sie es als eine Klasse, die Ihnen hilft, Teile aus mehreren Sätzen zu sammeln.

Baugruppen sind nur eine Möglichkeit, Teile an die aufrufende Anwendung zu senden. Sie können Teile direkt aus der vorhandenen Baugruppe übergeben.

Für weitere Informationen über Kataloge, würde ich empfehlen, this zu lesen.

+1

Gibt es eine entsprechende Einheit? – Vaccano

+0

Würde es Ihnen etwas ausmachen, das dem ModuleCatalog gegenüberzustellen. Sie scheinen das Gleiche zu tun. –

4

Mef hat eine kleine Lernkurve - gehen Sie mindestens einmal durch die Dokumente auf mef.codeplex.com. Oder versuchen Sie Screencasts, wenn Sie wirklich Zeit brauchen.

Die Idee ist, dass ein Katalog ein Wörterbuch von exportierten Teilen (zu injizierende Objekte) oder zu importierenden Teilen (die injizierte Objekte benötigen) enthält. Der Katalog kann auf verschiedene Arten bestückt werden (daher the diff Catalog derivations) - von ein Verzeichnis (alle Asm in einem Verzeichnis) oder eine bestimmte Assembly.

Als nächstes können Sie einen zusammengesetzten Katalog z. Sie möchten ein einzelnes Wörterbuch erstellen, das alle exportierten Objekte von DirA und von dieser spezifischen Assembly, die in DirB liegt, enthält. In diesem Fall können Sie einzelne Kataloge und dann einen zusammengesetzten Katalog erstellen, der beide zusammenführt. Jetzt konsumieren Sie dieses zusammengeführte Wörterbuch in Ihrem Code, um nach Importen/Exporten zu fragen.