20

是什么AggregateCatalog?当你构造一个时它是什么意思new AggregateCatalog()?将程序集添加到目录时意味着什么,例如catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))?除了组件之外,您还可以将哪些内容添加到目录中?任何与此相关的一般知识也会有所帮助(我完全是菜鸟)

4

2 回答 2

18

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

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

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

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

于 2010-11-22T04:11:53.647 回答
5

Mef 的学习曲线很小 - 至少浏览一次 mef.codeplex.com 上的文档。或者,如果您真的时间紧迫,请尝试截屏。

这个想法是目录是导出部分(要注入的对象)或需要导入的部分(需要注入对象)的字典。目录可以以多种方式填充(因此diff 目录派生) - 从目录(目录中的所有 asm)或特定程序集。

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

于 2010-11-22T04:39:55.037 回答