我正在考虑用 C#(目前是遗留的 VB6 代码)重写我们的应用程序的一部分。我开始使用的模块负责将来自各种系统的数据导入我们的数据库。大约每年 5-6 次,一个新客户要求我们为他们使用的系统编写一个新的导入。目前,这要求我们为添加到应用程序的每个新导入选项发布一个新版本的软件。
重写的目标之一是使应用程序支持插件。每个新的导入都可以成为一个单独的程序集,主机应用程序将识别并允许最终用户与之交互。这有望在某种程度上简化生活,因为我们可以简单地将一个新程序集放入目录中,并让它被主(主机)应用程序识别和使用。
我正在努力解决的问题之一与我们目前支持的导入选项之间的差异有关。在某些情况下,我们实际上让用户指向一个目录并将目录中的所有文件读入我们的系统。在其他情况下,我们允许它们指向单个文件并导入其内容。此外,某些导入具有用户应用的日期范围限制,而其他导入则没有。
我的问题是,我如何设计应用程序,以便在我们构建和支持的导入之间具有一定的灵活性,同时实现一个通用接口,使宿主应用程序能够轻松识别插件和选项每个都暴露给用户?