惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
量子位
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
博客园 - 聂微东
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
U
Unit 42
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog

博客园 - SuperCai

Leaf'n Joy 隐私政策 Leaf'n Joy (植物灯IOSAPP) WndProc(ref Message m) [转]DllImport属性详解 [转]C#自定义控件背景色透明的方法 日期时间格式化(到毫秒) [转]使用foreach 循环删除DataRow的时候的问题 UTC时间与WINDOWS时间互换 [转]C# Telnet [原]电子工程师工具箱 动态内存中加载DLL的问题 电缆电压降计算 红外对射探测器的安装方法 红外对射调试 终于想起了密码~~汗~~ 解决 Win2003 SP1 无法安装 - SuperCai .net创建windows Service步骤 用netsh自动切换IP
对C#插件接口应用的一些理解
SuperCai · 2012-10-24 · via 博客园 - SuperCai

作一程式,边开发边使用,为方便开发与更新,采用插件方式开发,读了网上一些文章,对插件接口有了一些认识:

主程式为程式框架,表现为exe,

功能模块作插件,表现为DLL,

主程式动态调用功能模块,功能模块为主程式的一部分,

主程式怎样与功能模块交互呢?

简单点就是功能模块实例化时把主程式当一值传递给功能模块,主程式上各开放的资源交给功能模块控制,爱咋整咋整,不设防


如果是有条件开放整呢?用接口吧

讲究的是标准,规范,约束,小人之心行事

接口咋整:

定义插件接口(主程式就认这个接口,实现这个接口的都是哥们,不拒绝)

定义主程式接口(提供给功能模块调用,把要开放的资源窗口都写在这上面,功能模块能折腾的就这些了)

功能模块实现插件接口,主程式实现主程式接口,

两个接口成了主程式与功能模块通讯的桥梁,双方对话就靠它了

以下代码摘自网络:

Public Interface IPluginsApplication//供主程式使用,由主程式实现

    Event Display(ByVal sender As Object, ByVal e As EventArgs)

    Property Caption() As String

    Sub DisplayInput(ByVal Text As String)


End Interface

Public Interface IPlugins//供功能模块使用,由功能模块实现

    Sub Connect(ByVal PluginsApp As IPluginsApplication)

    Sub DIsconnect()

End Interface

主程式代码:

Public Property Caption() As String Implements PluginsInterface.IPluginsApplication.Caption
        Get
            Return Me.Text
        End Get
        Set(ByVal value As String)
            Me.Text = value
        End Set
    End Property

    Public Event Display(ByVal sender As Object, ByVal e As System.EventArgs) Implements PluginsInterface.IPluginsApplication.Display
...

 Dim pobj As PluginsInterface.IPlugins

 pobj.Connect(Me)//把主程式开放的接口提供功能模块

不知以上理解是否有错,-_-!!!,