3

组合批处理类中的 AddPart() 和 AddExport() 有什么区别?我什么时候会使用其中一个?

4

1 回答 1

3

我想知道同样的事情,遗憾的是找不到任何简明扼要地描述 AddPart、AddExport(和 AddExportedValue)之间区别的文档。这是我到目前为止所学到的:

MEF 术语中的一部分是提供功能(又名导出)和指定依赖项(又名导入)的组件。

因此,当您致电时,batch.AddPart(something)您是在告诉 MEF,“某物”是可能提供export并依赖于一个或多个imports的组件。
如果您打电话batch.AddExport(new Export("someExport", () => something)),那么您是在告诉 MEF “某物”是一个仅提供导出而不需要任何导入的组件,即 MEF 将忽略[Import]可能在“某物”类中指定的任何注释。

IEnumerable<ImportDefinition>在内部 AddExport 实际上调用 AddPart,但在此之前它将传递的对象包装在“SingleExportComposablePart”中,即 ComposablePart在调用时返回空ComposablePart.ImportDefinitions

于 2012-07-17T12:48:58.360 回答