.NET简谈静态事件链

简介: 在我们日常开发过程中经常会遇到多个类实例之间的关联,不管是B/S还是C/S的项目,在对实例的使用是一样的;只不过C/S的项目比较好控制,不管是UI层的对象都能很好的控制,包括继承、重写等等;而在B/S里面可能不太方便,由于B/S本身的特点,不能暴露内部太多的继承关系,以免不小心破坏类的封闭性;我这篇...

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

1:

2:

3:

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

4:

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

 5:

6:

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

目录
相关文章
|
XML API 数据格式
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口
使用SoapCore实现在.net core平台下开发webservice;以及使用HttpClientFactory动态访问webservice。首先,需要在包项目下面引用SoapCore:
1046 0
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口
.N“.NET研究”ET简谈委托链
  说起链表大家都很熟悉,说起委托相信大部分的.NET程序员都也很了解。在平时的开发过程中经常会用到这两种技术,只不过链表在.NET里面已经被封装了,让我们用起来更加的方便就是集合类型Collection。
790 0
一起谈.NET技术,.NET简谈委托链
  说起链表大家都很熟悉,说起委托相信大部分的.NET程序员都也很了解。在平时的开发过程中经常会用到这两种技术,只不过链表在.NET里面已经被封装了,让我们用起来更加的方便就是集合类型Collection。
826 0
|
C# UED
一起谈.NET技术,C#基础之委托异步
  大家知道委托就相当于C++里面的函数指针,相信大家都很很了解,看看如下简单代码来回想一下委托 public delegate void Ad(); xu xus = new xu(); Ad b = new Ad(xus.
830 0
|
C# UED
C#基础之“.NET研究”委托异步
  大家知道委托就相当于C++里面的函数指针,相信大家都很很了解,看看如下简单代码来回想一下委托 public delegate void Ad(); xu xus = new xu(); Ad b = new Ad(xus.
731 0
|
前端开发 开发工具
Silverlight同步(Synchro“.NET研究”nous)调用WCF服务
  Silverlight的RIA应用中访问远端的WebService或WCF服务,都是通过异步线程模式调用的。在某些情况下我们的调用是需要同步进行,虽然Silverlight没有内置同步线程模式调用远端服务接口,但是我们可以通过多线程的处理来伪装出同步调用的实现。
757 0
构建“.NET研究” View 时可能用到的代理函数调用顺序
  很多时候,上海企业上海徐汇企业网站制作网站设计与制作要记住iPhone试图加载的life-cycle上海闵行企业网站设计与制作对应的代理函数是有点头疼的,特别是用Interface Buil上海徐汇企业网站设计与制作der构建界面的情况下。
616 0
|
开发框架 安全 IDE