我有一个基本上是带有预加载控件的设计器的应用程序,您可以在其中使用控件设计页面。
我计划在未来发布越来越多的控件。我不想为新添加的控件发布新版本,因为它有其缺点。所以我在考虑插件/插件类型的架构,我只是单独发布插件/插件,他们可以安装它们并在设计器中获取控件。
现在我使用 xml 文件作为插件来指定控件、它的行为、它的样式等。每个 xml(插件)代表一个单独的控件。但是我发现实现它非常困难,因为我必须编写一个通用解析器来读取所有插件。
相反,我可以为每个插件发布一个 dll,让我有更多的控制权来编写代码来定义控件的行为/外观并通过主引擎动态加载它吗?如果是这样,我如何检查 dll 并将其动态加载到我的应用程序中?
最佳答案
您可能想查看 Managed Extensibility Framework .这可能会解决您的大部分问题甚至更多,但需要学习一些新技术...
您还应该按照 mathieu 的建议查看 System.Addin
命名空间!
如果你想走自己的路线,我建议采用以下方法:
- 主应用程序中的插件接口(interface)
- 在插件 dll 中实现该接口(interface)
- 在运行时使用
Assembly.Load
加载 dll- 您可能想考虑将插件程序集加载到单独的 AppDomain 中
关于c# - 实现插件架构 - 动态 DLL 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6120343/