.net - .NET 应用程序的插件设计

标签 .net plugins interface-design

我正在考虑用 C# 重写我们的应用程序的一部分(目前是旧版 VB6 代码)。我开始使用的模块负责将数据从各种系统导入到我们的数据库中。每年大约有 5-6 次,新客户要求我们为他们使用的系统编写新的导入。目前,这要求我们为添加到应用程序的每个新导入选项发布新版本的软件。

重写的目标之一是使应用程序支持插件。每个新的导入都可以成为一个单独的程序集,主机应用程序将识别该程序集并允许最终用户与之交互。这有望在某种程度上简化生活,因为我们可以简单地将新程序集放入目录中,并让它被主(主机)应用程序识别和使用。

我正在努力解决的问题之一与我们当前支持的导入选项之间的差异有关。在某些情况下,我们实际上让用户指向一个目录并将该目录中的所有文件读取到我们的系统中。在其他情况下,我们允许它们指向单个文件并导入其内容。此外,某些导入具有用户应用的日期范围限制,而其他导入则没有。

我的问题是,如何设计应用程序,使我们构建和支持的导入具有一定的灵 active ,同时实现一个通用接口(interface),使主机应用程序能够轻松识别插件以及每个选项向用户公开的选项?

最佳答案

我建议您查看 .NET 3.5 附带的托管加载项框架。 Add-In team已在 CodePlex site 发布了一些示例和工具还有..

关于.net - .NET 应用程序的插件设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292/

相关文章:

c++ - 返回一个 vector ,知道它总是包含一条记录,以便与界面的其余部分保持一致?

c# - 我如何表达一个参数需要在 C# 中实现多个接口(interface)

c# - 如何在 Windows 窗体中显示组合框所选项目的全文?

.net - 我应该从哪些类派生自定义 DataAccessLayerException 和 DuplicateEntryException?

c++ - Qt 和 C++ QtPlugin - 可以处理什么样的插件?

javascript - 我可以在同一个插件中添加这段代码吗

.net - FindAll() 的 DirectorySearcher.SizeLimit = 1 是否等于 FindOne() [DirectoryServices/.net]

c# - 拆分字符串值并存储在列表中

java - Eclipse 插件 : Pass values from one View to other View