从MEF容器中获取导出的部件实例

  • 本文关键字:实例 获取 MEF mef
  • 更新时间 :
  • 英文 :


如何在MEF容器中导出部件的现有实例。如果我有在容器中组成的类A,我需要在我的代码中的某些地方获得实例,如果我调用GetExortedValue(),那么如果类A与creatationpolicy签署。NonShared,然后它将再次实例化,我需要当前的。

显然,在容器上调用GetExportedValue<T>可能导致生成T的新实例(取决于该部分使用的CreationPolicy),但是有一个调用GetExport<T>的选项,它将返回一个Lazy<T>实例。这是生成的单数部分,并且只生成一次:

var part = container.GetExport<IMyInterface>();

在上面的例子中,part将是Lazy<IMyInterface>的一个实例,所以当您第一次访问part.Value时,Lazy<IMyInterface>中的委托绑定回调到容器来创建和组合IMyInterface实例并返回。后续对part.Value的调用将始终返回相同的实例。

最新更新