我读了这篇文章How to load plugins in .NET?,我真的看不到微软的System.Addin名称空间的光彩。为什么我不能在我的bin目录中有一个plugins文件夹,用户可以将程序集放入实现我设计的接口?然后我可以使用反射来创建插件类的实例并使用我的界面引用它。
为什么System.Addin的方式显然要好得多?特别是因为它似乎是工作的三倍和不太直观的设计。
答案 0 :(得分:10)
我建议查看Managed Extensibility Framework(已添加到.NET 4中的核心框架中)。它允许您完成您所描述的内容,并且在扩展性方案中使用非常简单和灵活。
答案 1 :(得分:6)
“好多了”总是取决于你的观点和要求。如果您的方法符合您的需求,那就去吧。但是插件变得非常复杂得多。插件之间的依赖关系怎么样?安全?不同的schemata如何找到插件? ...?这些功能已经为您解决了。如果您不需要它们,那么库可能会过度。如果你需要它们,重新发明轮子是个坏主意。 ; - )
答案 2 :(得分:2)
您应该使用MEF,该问题来自2008年
答案 3 :(得分:2)
看看微软的Managed Extensibilty Framework;代码是开源的,所以你可以用它来编写自己的代码,或者你可以直接使用MEF。