【发布时间】:2011-03-22 18:07:41
【问题描述】:
我有一个基于 MEF 的应用程序,可以使用插件进行自定义。这个应用程序有几个导入的部分,当用户决定摆脱该插件时,我想在运行时删除其中的一些(以便能够删除包含它们的 .dll)。
CompositionBatch 可以满足我的需要,但它需要ComposablePart 实例作为RemovePart() 方法的输入参数,而且我只有实现ISomething 接口的普通对象,或者AggregateCatalog 中的ComposablePartDefinition 实例。所以我的问题是:
- 如何找到 ComposablePart 表示导入的实例 我想摆脱的对象?
- 或 或者:我如何获取列表 属于的 ComposablePart 对象 到某个.dll?
我会使用如下内容:
var parts = Container.Catalog.Parts
.Where(p => iDontNeed(p))
.Select(p => howDoIConvertComposablePartDefinition2ComposablePart(p));
var batch = new CompositionBatch();
parts.ToList().ForEach(part => batch.RemovePart(part));
谢谢
【问题讨论】: