如何制作一个接受模块/加载项的“仪表板”实用程序

时间:2011-02-17 02:42:29

标签: c# design-patterns module

我希望这个问题有道理。基本上,我正在寻找一套指南,甚至是一个教程,它将展示如何创建一个可以轻松添加和删除“模块”或“加载项”的应用程序

例如,在Microsoft Office中,您通常会看到可以下载和安装的程序,它们只会在Microsoft Word(例如)中添加一个额外的选项卡,以实现一些新功能。

我有几个使用基本相同的数据源的应用程序,我想整合它们,并且还可以在未来添加更多功能,而不需要1.需要全新安装和2.调整每个部分我的代码。

我正在寻找一个可以开始的地方。

提前致谢。

**

编辑:详细说明...... 我特别想到的是一个应用程序,它访问存储在文本文件中的大量数据,并使用某些数据来创建一些图表,也许还有一些表格。我希望能够使用相同的数据在将来添加不同的图表。因此,您可以单击Button_A并生成Graph_A,几周后,您可以单击Button_B并生成Graph_B。

如果我能想出一种只需要从文件中读取一次数据的方法,那将是非常好的,但我知道这将需要稍微调整我的DataReader类。

3 个答案:

答案 0 :(得分:3)

一个开始的地方是为将来的模块定义一个接口,并构建一个实用程序,扫描其中的所有dll,寻找实现所述接口的类。

找到支持类后,您可以在运行时创建实例并添加到应用程序中。这是.NET中支持“插件”的常用习惯用法

Activator类是在运行时从Type创建实例的常用方法。

http://msdn.microsoft.com/en-us/library/system.activator.aspx

如果您的问题没有更多信息,很难提供更多详细信息。你能详细说一下吗?

答案 1 :(得分:3)

查看Microsoft的Composite Application Library

它针对的是WPF,但你可以从那里得到一些想法。

答案 2 :(得分:2)

正如Adam所说,首先要做的是定义插件模块的接口 - 他们期望从容器接收什么,以及容器必须能够调用哪些方法?

就容器本身而言,我偏爱MEF作为定位技术;您可以在添加新DLL时创建目录并重新组合系统。我为此构建了一个类似的系统来解析不同的文件,MEF的组合功能对于运行时发现来说非常棒。