组合批次类中的AddPart()和AddExport()有什么区别?我什么时候可以使用另一个?

最佳答案

我想知道同一件事,但是不幸的是,还没有找到任何简明扼要地描述AddPart,AddExport(和AddExportedValue)之间差异的文档。这是我到目前为止所学到的:

MEF术语的一部分是提供功能(也称为导出)并指定依赖项(也称为导入)的组件。

因此,当您呼叫batch.AddPart(something)时,您是在告诉MEF“某物”是可以提供出口且依赖于一个或多个进口的组件。
如果调用batch.AddExport(new Export("someExport", () => something)),则告诉MEF“某物”是仅提供导出而无需任何导入的组件,即MEF将忽略“某物”类中可能指定的任何[Import]批注。

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

07-24 09:22