【问题标题】:What is AggregateCatalog?什么是聚合目录?
【发布时间】:2011-05-13 15:10:24
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您是否介意将其与 ModuleCatalog 进行对比。他们似乎在做同样的事情。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-22
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多