C# MEF-在一个插件失败时修改执行

C# MEF-在一个插件失败时修改执行,c#,.net-3.5,unmanaged,C#,.net 3.5,Unmanaged,我正在使用MEF作为我的应用程序的插件系统。流程如下所示: 运行所有Pre-插件 运行所有Core-插件 运行所有Post-插件 例如,如果核心执行中的插件失败,我不想运行某些post插件 实现这一目标的最佳方式是什么?希望我的问题是清楚的,否则请告诉我,我将尝试详细说明。让您的核心插件返回到一个接口,例如包含您的返回值和错误状态的IResult。通过构造函数将错误状态传递到Post插件中,或者作为契约方法签名的一部分,并允许插件决定是否运行 否则,它听起来像是应用程序本身在决定插件是否正在运行

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

  • 运行所有
    Pre
    -插件
  • 运行所有
    Core
    -插件
  • 运行所有
    Post
    -插件
  • 例如,如果核心执行中的插件失败,我不想运行某些post插件


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

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

    否则,它听起来像是应用程序本身在决定插件是否正在运行,而这违背了整个插件体系结构的目的

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