我正在使用MEF作为我的应用程序的插件系统。流程如下:
Pre
- 插件Core
- 插件Post
- 插件例如,如果Core执行中的插件失败,我不想运行某些帖子插件。
实现这一目标的最佳方法是什么?希望我的问题很清楚,否则请告诉我,我会尽力详细说明。
答案 0 :(得分:1)
让你的核心插件返回一个界面,比如IResult,它有你的返回值和错误状态。通过构造函数将错误状态传递到Post插件中,或作为合同方法签名的一部分,并允许插件决定是否运行。
否则听起来应用程序本身正在决定插件是否正在运行,这会破坏整个插件架构的目的。
即便如此,听起来更像是你在这里进行了事后运行事件处理,所以为什么不设置插件可以订阅的事件,并将前置,核心和后处理逻辑分组到插件。他们可以保持自己的内部状态,并根据核心处理的成功或失败决定何时运行后处理。