.NET实现插件功能的接口程序(3)
第四步,制作插件。
将一个类实现“插件标识”接口,用来表示这个类是宿主程序可识别的插件。同时必须实现Connect方法。通过Connect的参数,插件程序可以使用宿主程序通过“插件服务”接口提供的功能。
Public Class Plugins1
Implements PluginsInterface.IPlugins
Private WithEvents m_papp As PluginsInterface.IPluginsApplication
Public Sub Connect(ByVal PluginsApp As PluginsInterface.IPluginsApplication) Implements PluginsInterface.IPlugins.Connect
MsgBox("插件启动成功。")
Me.m_papp = PluginsApp
Me.m_papp.Caption = InputBox("请输入宿主程序的窗体标题")
Me.m_papp.DisplayInput(InputBox("请输入字符串"))
End Sub
Private Sub m_papp_Display(ByVal sender As Object, ByVal e As System.EventArgs) Handles m_papp.Display
Dim f As New Form1
f.ShowDialog()
End Sub
End Class
通过上述方法,我们就制作完成了一个简单的插件。
总结一下:
(1) 通过接口定义插件的标识,进行类型验证并启动插件程序。这样做的好处是统一了插件的类型并且可以安全的进行启动。
(2) 通过接口定义宿主程序希望公开的功能。这样做一方面保证了宿主程序不会被插件程序完全的控制,另一方面让插件程序可以安全的运行宿主提供的方法。缺点是宿主程序如果有多层嵌套的类关系需要开放的话,需要将所有的类都重新通过接口进行封装。
(3) 宿主程序、插件程序引用统一的接口程序,将插件的开发了宿主程序本身脱离,提高宿主的安全性,并且防止了循环引用的发生。
PS:本文所用到的程序代码pluginsapplication.zip