【发布时间】:2010-05-22 13:51:45
【问题描述】:
我正在编写一个工具,它可以与多个版本控制系统(subversion 或 clearcase)进行通信,并且具有可以插入其中的各种实用程序。我想使用 MEF 来加载版本控制提供程序和实用程序,它们都有为它们定义的接口。
我已经开始为此使用 MEF。但是,如果加载任何插件失败(在我的一半客户端机器上,ClearCase COM 绑定将不存在,因此加载将失败,另一半将不会安装 SVN,因此不会加载 SVN 插件), MEF 抛出异常并且没有插件工作;我希望其他插件能够加载。
[ImportMany(AllowRecomposition = true)]
public IEnumerable<IVersionControl> RegisteredProviders { get; private set; }
相反,如果任何提供者未能自行构建,则RegisteredProviders 为空。
是否有一种简单的方法来配置 MEF 来实现这一点(报告异常但加载其他实例),还是我必须更改接口以延迟它们的初始化失败,直到 MEF 实例化对象之后?
【问题讨论】: