【问题标题】:Best way to create a plugin environment in .NET在 .NET 中创建插件环境的最佳方法
【发布时间】:2011-06-08 19:53:58
【问题描述】:

看了这篇文章How to load plugins in .NET?,我真的没有看到微软的 System.Addin 命名空间的光彩。为什么我不能在我的 bin 目录中有一个 plugins 文件夹,用户可以将一个程序集放入其中以实现我设计的接口?然后我可以使用反射来创建插件类的实例并在我的界面中引用它。

为什么 System.Addin 的方式明显好很多?尤其是因为它看起来像是工作量的三倍,而且设计也不那么直观。

【问题讨论】:

  • :) 你最好听听人们同步说的话
  • @Reed Copsey 已经修复 :) 该死的拼写检查器
  • @qrow: 再说一次,你怎么说话而不是同步说话? (你的意思是同时?)
  • @Reed Copsey 很高兴我糟糕的英语听起来像个笑话 :)

标签: c# .net inheritance plugins


【解决方案1】:

我建议查看Managed Extensibility Framework(已添加到 .NET 4 的核心框架中)。它允许您完全按照您的描述进行操作,并且在可扩展性场景中使用起来非常简单灵活。

【讨论】:

  • 顺便谢谢你,我将使用 MEF。
【解决方案2】:

“好多了”总是取决于你的观点和要求。如果您的方法符合您的需求,那就去做吧。但是插件可以变得非常快速复杂。插件之间的依赖关系如何?安全?不同的模式如何找到插件? ...?这些功能已经为您解决了。如果您不需要它们,图书馆可能会矫枉过正。如果您需要它们,那么重新发明轮子将是一个坏主意。 ;-)

【讨论】:

  • +1 用于回答问题的症结; MEF 是一个很棒的工具,但它绝对不是一个完整的“插件”框架,具有 AppDomain 隔离、安全性和版本控制/依赖性管理。这些附加功能对于一个简单的应用程序来说通常是多余的,但如果您正在构建一个大型的任务关键型应用程序,它们是重要的考虑因素。
【解决方案3】:

你应该使用MEF,这个问题是2008年的

【讨论】:

  • 我不敢相信实际上有三个重复的答案,而且他们都被赞成了,哈哈
  • 都是同时发的
【解决方案4】:

看看微软的Managed Extensibilty Framework;该代码是开源的,因此您可以使用它来编写自己的代码,也可以直接使用 MEF。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-08
    • 2021-11-29
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多