在.NET中创建插件环境的最佳方法

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

为什么System.Addin显然要好得多? 特别是因为它似乎是工作的三倍和不太直观的设计。

“好多了”总是取决于你的观点和要求。 如果您的方法符合您的需求,那就去吧。 但是插件变得非常复杂得多。 插件之间的依赖关系怎么样? 安全? 不同的schemata如何找到插件? …? 这些function已经为您解决了。 如果您不需要它们,那么库可能会过度。 如果你需要它们,重新发明轮子是个坏主意。 😉

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

您应该使用MEF ,该问题来自2008年

看看微软的Managed Extensibilty Framework ; 代码是开源的,所以你可以用它来编写自己的代码,或者你可以直接使用MEF。