系统与插件在C#

我必须开发一个监控传感器信息的系统,但将来可能会添加许多传感器.

也就是说,这个想法将是开发一个由应用程序框架组成的系统.传感器(每个都具有其通信和数据呈现特性)将作为插件添加到系统中.

我如何在C#上编写代码?是组件驱动开发的一个例子吗?我应该使用动态库吗?

解决方法

C#有很多ad-hoc插件系统.一个描述在 Plugin Architecture using C#( The Code Project).一般的方法是主机应用程序发布具有接口的程序集.它通过一个文件夹枚举,并找到定义一个实现其接口并加载它们并实例化类的类的程序集.

实际上你想做更多的事情.如果主机应用程序定义了两个接口(IHost和IPlugIn),则最好. IHost界面提供插件可以订阅的服务. IPlugIn构建了一个IHost.

要加载插件,你应该做的不仅仅是一个插件.您应该枚举所有可加载的插件.构建它们.问他们是否可以跑.请他们将API导出到主机中.请他们从主机导入API.插件应该能够询问其他插件的存在.

这样,插件可以通过提供更多的API来扩展应用程序.

插件包括事件.这样插件可以监控插件加载和卸载的过程.

在世界最后,你应该警告插件,他们将要消失.然后把它们拿出来

这将给你一个可以在一个很小的框架中编写的应用程序,如果你想要的话可​​以完全在插件中实现.

作为一个额外的好处,您还应该使其在插件文件夹中解决插件的快捷方式.这可以让您编写应用程序并将其传递给其他人.他们可以在其开发环境中创建一个插件,在应用程序的插件文件夹中创建一个快捷方式,而不必担心在每次编译之后部署.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...