2010-11-22 27 views
16

Qu'est-ce que AggregateCatalog? Qu'est-ce que cela signifie lorsque vous construisez un new AggregateCatalog()? Qu'est-ce que cela signifie lorsque vous ajoutez des assemblages au catalogue, par exemple catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? A part les assemblages, que pouvez-vous ajouter au catalogue? toute connaissance générale liée à cela serait aussi utile (je suis un noob total)Qu'est-ce que AggregateCatalog?

Répondre

16

AggregateCatalog dans MEF vous permet fondamentalement de collecter plusieurs catalogues d'extension. Lorsque vous appelez new AggregateCatalog(), vous instanciez une nouvelle collection de catalogue (pas nécessairement remplie) qui peut contenir plusieurs instances de ComposablePartCatalog, qui peut contenir plusieurs parties. Considérons que c'est une classe qui vous aide à collecter des pièces à partir de plusieurs ensembles.

Les assemblages sont simplement un moyen de transmettre des pièces à l'application appelante. Vous pouvez passer des pièces directement depuis l'intérieur de l'assemblage existant.

Pour plus d'informations sur les catalogues, je recommande de lire this.

+1

Y a-t-il une unité équivalente à cela? – Vaccano

+0

Pourriez-vous opposer cela à la ModuleCatalog. Ils semblent faire la même chose. –

4

Mef a une petite courbe d'apprentissage - passez par les docs sur mef.codeplex.com au moins une fois. Ou essayez les screencasts si vous êtes vraiment pressé par le temps. L'idée est qu'un catalogue est un dictionnaire de pièces exportées (objets à injecter) ou de pièces qui ont besoin d'importations (qui ont besoin d'objets injectés). Le catalogue peut être rempli de plusieurs façons (d'où the diff Catalog derivations) - de un répertoire (tout asm dans un répertoire) ou un assembly spécifique.

Ensuite, vous pouvez créer un catalogue composite, par ex. vous voulez créer un seul dictionnaire contenant tous les objets exportés depuis DirA et depuis cet assembly spécifique situé dans DirB. Dans ce cas, vous pouvez créer des catalogues individuels, puis un catalogue composite qui fusionne les deux. Maintenant vous consommez ce dictionnaire fusionné dans votre code pour demander des imports/exports.