c# - Managed Extensibility Framework 是否应该用于使用外部插件?

标签 c# design-patterns plugins mef

我想我得到了 MEF 模型。但我很难确定它是否适合我正在尝试做的事情。

我有一个应用程序可以调出第三方插件来进行一些视频处理。该插件可以是 FFMPEG.exe 或 x264.exe,无所谓。调用插件的过程是通过 ProcessStartInfo(基本上是通过命令行)并传递一堆参数。例如

ffmpeg.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Xheight 100 -Xwidth 100
or 
x264.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Yheight 100 -Ywidth 100

假设每个插件都有自己的参数集,那么使用 MEF 是否合适,这样无论使用哪个插件,接口(interface)都是相同的(通过公共(public)契约(Contract)的 alebit)?如果是这样,我是否必须为每个实现契约的插件编写一个包装类?

这是使用 MEF 的正确方法吗?一方面,我试图通过允许客户选择他们的插件来使我的应用程序可扩展。但我真的不确定 MEF 是否矫枉过正,简单地使用配置文件来存储命令是否是更好的方法?

最佳答案

如果您有可能简单地使用配置文件,那么这将是更可取的。它将允许添加或更改插件而无需重新编译。这也将为高级用户提供调整插件的机会。

关于c# - Managed Extensibility Framework 是否应该用于使用外部插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828820/

相关文章:

c# - 编译器是否优化对 const 变量和文字 const 数字的操作?

java - 这真的是适配器模式的一个例子吗?

linux - GWT eclipse 插件问题

c# - 对象未设置为引用

c# - 使用 Emailmessage 类检索邮件正文

c# - 创建 .eml 文件而不先将 EmailMessage 保存到邮箱

java - 重写 Crenshaw 的 "let' 构建编译器的设计模式”?

ruby-on-rails - 充当可读 Rails 插件问题

c# - 根据随机接收的位置坐标计算速度

c# - 是否有一种设计模式可以避免这种重复或反射(reflection)?