博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET简谈静态事件链
阅读量:7063 次
发布时间:2019-06-28

本文共 657 字,大约阅读时间需要 2 分钟。

在我们日常开发过程中经常会遇到多个类实例之间的关联,不管是B/S还是C/S的项目,在对实例的使用是一样的;只不过C/S的项目比较好控制,不管是UI层的对象都能很好的控制,包括继承、重写等等;而在B/S里面可能不太方便,由于B/S本身的特点,不能暴露内部太多的继承关系,以免不小心破坏类的封闭性;我这篇文章主要是讨论在多个类实例之间怎么进行动态关联,比如我们在开发Winform项目的时候,可能会碰到两个或多个窗口之间协同工作的情况;本人在这种情况下采用的是静态事件链的解决方案,多个实例之间不存在主次之分,有人肯定会觉得在一个类中定义事件,在调用的类中去实例化并订阅相关事件;这样解决不了多实例互操作的关系,比如:我有五个窗口分布在主界面中,当我点击菜单栏中的一个刷新按钮时,想让这五个窗口同时刷新,这样一来就必须让这五个窗口实例都订阅来自一个地方的事件;我为什么用静态事件,就是为了方便多实例使用;如果读者不太清楚事件或者委托链之类的概念请阅读本人的另一篇文章

1:

2:

3:

图3中是静态事件链类的定义,定义一个静态事件好一个静态方法,注意本人在该类中也订阅了ClickEvent事件,就是怕没有任何实例订阅这个静态事件,然后又触发了这个事件,导致空地址封送失败,也就是空引用调用;

4:

图4是模拟窗口的一个实现,在构造函数中我们订阅了静态事件链中的一个ClickEvent事件;其余四个窗口都是一样的,我就不贴图片了;

5:

 

6:

 静态事件链就讲完了,通过一点触发多点的好方法,在我们开发过程中经常用到;

转载地址:http://trjll.baihongyu.com/

你可能感兴趣的文章
回流、重绘及其优化
查看>>
责任链模式的两种实现
查看>>
入口文件开始,分析Vue源码实现
查看>>
LintCode 31. partitionArray 数组划分
查看>>
vue和cordova项目整合打包,并实现vue调用android的相机的demo
查看>>
微信开放平台全网发布【失败】的几点排查方法
查看>>
vue-router 实现分析
查看>>
js如何打印object对象
查看>>
体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
查看>>
Ruby 2.x 源代码分析:扩展 概述
查看>>
我感觉这是史上最牛的防sql注入方法类
查看>>
angular2开源库收集
查看>>
ArchSummit深圳APM专场总结:性能监控与调优实践干货分享
查看>>
Vue性能优化:如何实现延迟加载和代码拆分?
查看>>
据Progress调查:2018年,70%的客户在使用NoSQL
查看>>
微服务架构适用场景分析
查看>>
OpsRamp推出以服务为中心的AIOps和云监控功能
查看>>
MongoDB又不加密,8.09亿条个人详细记录泄露
查看>>
《引领转型》访谈录
查看>>
用Git虚拟文件系统来解决大型存储问题
查看>>