组合批次类中的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
。