什么是AggregateCatalog
?构建new AggregateCatalog()
时意味着什么?将程序集添加到目录时,例如catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))
,这意味着什么?除了程序集,您可以添加到目录中吗?任何与此相关的一般知识也会有所帮助(我是一个总的菜鸟)
答案 0 :(得分:17)
AggregateCatalog
基本上允许您收集多个扩展目录。当你调用new AggregateCatalog()
时,你基本上是实例化一个新的目录集合(不一定是填充的),它可以包含多个ComposablePartCatalog实例,它们可以包含多个部分。
将它视为一个帮助您从多个集合中收集零件的类。
程序集只是将部件推送到调用应用程序的一种方法。您可以直接从现有装配体内部传递零件。
有关目录的更多信息,我建议您阅读this。
答案 1 :(得分:4)
Mef有一个小的学习曲线 - 至少一次通过mef.codeplex.com上的文档。或者如果你真的有时间的话,可以尝试截屏。
这个想法是目录是导出部件(要注入的对象)或需要导入的部件(需要注入对象)的字典。目录可以以多种方式填充(因此the diff Catalog derivations) - 来自目录(所有asm in dir)或特定程序集。
接下来,您可以创建一个复合目录,例如您想要创建一个包含DirA中所有导出对象以及位于DirB中的特定程序集的单个字典。在这种情况下,您可以创建单独的目录,然后创建合并两者的复合目录。现在,您在代码中使用此合并字典以请求导入/导出。