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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Fortinet All Blogs
博客园 - 叶小钗
T
Tailwind CSS Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
The Exploit Database - CXSecurity.com
Blog — PlanetScale
Blog — PlanetScale
T
Tenable Blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
A
Arctic Wolf
P
Proofpoint News Feed
S
SegmentFault 最新的问题
C
CERT Recently Published Vulnerability Notes
T
Threatpost
Y
Y Combinator Blog
WordPress大学
WordPress大学
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
小众软件
小众软件
U
Unit 42
云风的 BLOG
云风的 BLOG
美团技术团队
S
Securelist
C
Cybersecurity and Infrastructure Security Agency CISA
L
LangChain Blog
G
GRAHAM CLULEY
P
Proofpoint News Feed
I
Intezer
Security Latest
Security Latest
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
Cisco Talos Blog
Cisco Talos Blog
T
The Blog of Author Tim Ferriss
H
Heimdal Security Blog
T
Tor Project blog
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
T
Troy Hunt's Blog
Know Your Adversary
Know Your Adversary
博客园 - 司徒正美
Google Online Security Blog
Google Online Security Blog
V
V2EX
Application and Cybersecurity Blog
Application and Cybersecurity 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)//把主程式开放的接口提供功能模块

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