什么是AggregateCatalog?

Lou*_*hys 18 .net c# mef catalog system.componentmodel

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

Den*_*sky 18

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

考虑它是一个帮助您从多个集合中收集零件的类.

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

有关目录的更多信息,我建议阅读此内容.


Gis*_*shu 5

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

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

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