代码之家  ›  专栏  ›  技术社区  ›  alexn

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

  •  2
  • alexn  · 技术社区  · 14 年前

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

    1. 全部运行 Pre -插件
    2. 全部运行 Core -插件
    3. 全部运行 Post -插件

    例如,如果核心执行中的插件失败,我不想运行某些后期插件。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   pms1969    14 年前

    让您的核心插件返回到一个接口,比如iResult,它具有您的返回值和错误状态。通过构造函数或作为契约方法签名的一部分,将错误状态传递到您的后插件中,并允许您的插件决定它是否运行。

    否则,听起来好像应用程序自己在决定插件是否运行,这就破坏了整个插件体系结构的目的。

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