CompositionContainer.ComposeExportedValue方法究竟做了什么?

时间:2011-01-30 05:56:26

标签: .net mef

CompositionContainer.ComposeExportedValue方法是否接受一个对象并使对象的导出方法可用?我对此方法的作用感到困惑。我所知道的是这个方法使用容器注册对象。它如何用容器注册对象?此方法是否以某种方式主要使对象的导出方法或具有可用于其他classess的导出属性的对象?

1 个答案:

答案 0 :(得分:4)

AFAIK AttributedModelServices.ComposeExportedValue<T>CompositionContainer扩展方法将给定对象注册为满足合同T的部分。这意味着该对象确实将用于组合导入T的其他对象。

或许更重要的是不做

  • 它不会尝试使用“导入”属性设置任何属性。您可以使用AttributedModelServices.ComposeParts
  • 执行此操作
  • 它不会将对象的所有权转移到容器中。如果对象为IDisposable,则在处置容器时将 处理。

一般来说,你应该避免使用这些方法。通常,您只需向类中添加必要的属性,然后通过AssemblyCatalog将其添加到容器中。