MEF - 如果一个插件失败,修改执行

时间:2010-03-14 08:04:02

标签: c# .net-3.5 unmanaged

我正在使用MEF作为我的应用程序的插件系统。流程如下:

  1. 全部运行Pre - 插件
  2. 全部运行Core - 插件
  3. 全部运行Post - 插件
  4. 例如,如果Core执行中的插件失败,我不想运行某些帖子插件。

    实现这一目标的最佳方法是什么?希望我的问题很清楚,否则请告诉我,我会尽力详细说明。

1 个答案:

答案 0 :(得分:1)

让你的核心插件返回一个界面,比如IResult,它有你的返回值和错误状态。通过构造函数将错误状态传递到Post插件中,或作为合同方法签名的一部分,并允许插件决定是否运行。

否则听起来应用程序本身正在决定插件是否正在运行,这会破坏整个插件架构的目的。

即便如此,听起来更像是你在这里进行了事后运行事件处理,所以为什么不设置插件可以订阅的事件,并将前置,核心和后处理逻辑分组到插件。他们可以保持自己的内部状态,并根据核心处理的成功或失败决定何时运行后处理。