什么是AggregateCatalog?

时间:2010-11-22 03:59:06

标签: c# .net mef catalog system.componentmodel

什么是AggregateCatalog?构建new AggregateCatalog()时意味着什么?将程序集添加到目录时,例如catalog.Catalogs.Add(new AssemblyCatalog(someAssembly)),这意味着什么?除了程序集,您可以添加到目录中吗?任何与此相关的一般知识也会有所帮助(我是一个总的菜鸟)

2 个答案:

答案 0 :(得分:17)

MEF中的

AggregateCatalog基本上允许您收集多个扩展目录。当你调用new AggregateCatalog()时,你基本上是实例化一个新的目录集合(不一定是填充的),它可以包含多个ComposablePartCatalog实例,它们可以包含多个部分。

将它视为一个帮助您从多个集合中收集零件的类。

程序集只是将部件推送到调用应用程序的一种方法。您可以直接从现有装配体内部传递零件。

有关目录的更多信息,我建议您阅读this

答案 1 :(得分:4)

Mef有一个小的学习曲线 - 至少一次通过mef.codeplex.com上的文档。或者如果你真的有时间的话,可以尝试截屏。

这个想法是目录是导出部件(要注入的对象)或需要导入的部件(需要注入对象)的字典。目录可以以多种方式填充(因此the diff Catalog derivations) - 来自目录(所有asm in dir)或特定程序集。

接下来,您可以创建一个复合目录,例如您想要创建一个包含DirA中所有导出对象以及位于DirB中的特定程序集的单个字典。在这种情况下,您可以创建单独的目录,然后创建合并两者的复合目录。现在,您在代码中使用此合并字典以请求导入/导出。