当前位置:  开发笔记 > 编程语言 > 正文

带有C#插件的系统

如何解决《带有C#插件的系统》经验,为你挑选了2个好方法。

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

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

我如何在C#上编码?这是组件驱动开发的情况吗?我应该使用动态库吗?



1> plinth..:

C#有大量的ad-hoc插件系统.使用C#(在代码项目中)在插件架构中描述了一个.一般方法是宿主应用程序发布带有接口的程序集.它通过一个文件夹进行枚举,并查找定义实现其接口并加载它们并实例化类的类的程序集.

在实践中,你想要做更多.最好是主机应用程序定义两个接口,IHost和IPlugIn.IHost接口提供插件可以订阅的服务.IPlugIn构建为IHost.

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

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

PlugIns应该包含事件.这种插件可以监视插件加载和卸载的过程.

在世界末日,你应该警告插件它们会消失.然后拿出来.

这将为您提供一个可以在一个小框架中编写的应用程序,如果您愿意,可以完全在插件中实现.

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



2> Anton Gogole..:

托管可扩展性框架(MEF)就是您所需要的.您也可以使用依赖注入容器,但这有点不是您所期望的,尽管它本身就是一个完全可行的解决方案.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有