读书整理-关于.net内置事件的驱动原理浅析

原创 2013年12月05日 09:40:26

佩服下自己读书的速度,看完事件原理这一部分的内容,我比较乱,接着blog来整理下思路,就从反思.net内置事件入手,我们都知道 当点击 键盘操作 鼠标操作等操作都会映射到相应的事件 最普遍的 button click事件 我们就从这里入手 逐步分析 事件的机制 web开发中 button 继承自 web.control 他有一个 内部的事件  public event EventHandler Click

这是.net标准事件 需要两个参数 就是我们常见的 sender 和 e 这个事件有两个重要的描述 一个是 webcategory action 表示这个事件属于 活动分类,另一个 websysdescription button_onclick 是不是很熟悉 没错这就是事件默认的发起事件的方法名 通过反编译 可以看到 这个事件内部 有自己的 add 和removed 方法 来做注册和解除注册操作

add{base.event.addhandler(event.click,value)} removed{base.event.removeHandler(event.click,value)}通过调用 基类的 event属性的add和removed方法来注册和移除 这里的基类是? 回过头来看 button类 public class button:webControl 明白了 base指的是 webcontrol 那我们来看 webcontrol中 event属性的定义 没有? 再看 上面 webcontrol:control 原来还有一层 再看 擦 都没有 找不到event 我们从addHandler 入手 看看这个方法 究竟在哪 回过头看 啊哈原来是 events 好吧 2了 反编译下 看到 这是一个 control中protected 属性 只限本类和子类访问 实例不能访问 看到这个属性是 eventHandlerList 类型 并且是只读的 我们再来看下 eventHandlerList 这是一个类型 属于 system.componentModel 命名空间 实现了 Idisposed 接口 可以通过 using来 智能回收资源 从字面理解就是 事件委托列表 不深究 回到 刚才  我们看 addhandler 的两个参数 写着 eventclick value 看起来让人容易误解 反编译 可以看到 其实 是 object 和 delegate 其中 value 还是一个 eventHandler eventclick 是一个 button 内部的私人的对象型 字段 只能在button类内部访问 并且是只读的

好了整理下思路,button 的click 事件 被 指定为某钟事件处理程序的过程 button 内部有一个 虚方法 onclick 通过判断eventclcik事件来 形成默认的事件处理程序,addHandler 有一套自我判断委托是否合理的逻辑,技术不够不做深究,button有一个静态的构造方法 来初始化 一个object 对象赋给 eventclick object  而eventclick 是只读的

【读书感悟】关于时间管理和学习

这一段时间断断续续的读了几本关于时间管理的书,然后有一些感想,想了想,还是记录下来比较保险,免得又只有但分钟热度了~...
  • YYM15732626210
  • YYM15732626210
  • 2016年12月11日 23:58
  • 422

关于读书,读数据库的书

关于读书的一点个人 见解和想法,尤其是大量的技术丛书密集的时代.读书分很多层次的,有的人会读书,有的人喜欢读书,各有其乐.各种技术书琳琅满目,万花从中,如何去选择和应用,下面是我的一些看法,1)准确定...
  • christophe
  • christophe
  • 2007年09月08日 12:31
  • 606

Spring内置事件

package com.bjhy.platform.supermarket.test; import org.springframework.context.ApplicationContext; ...
  • u011659172
  • u011659172
  • 2017年01月06日 10:53
  • 498

网络安全传输(读书笔记)

检查服务器通信
  • pingshw
  • pingshw
  • 2014年01月06日 09:56
  • 1755

spring事件(一)--内置事件

spring事件(一)--内置事件
  • chinabestchina
  • chinabestchina
  • 2017年10月14日 14:46
  • 175

c#的事件实现的原理

如果你看了本BLOG写的委托的文章,理解本文应该比较容易,C#中的事件的实现是通过委托直接实现的,所以本文只给出事件实现的代码示例,如果你明白了委托,相信看懂本代码应该不难。 using System...
  • niuyongjie
  • niuyongjie
  • 2006年09月13日 09:35
  • 1881

Android读书笔记(一)

1.存储用户临时数据onSaveInstanceState() 2.技巧:知晓当前在哪一个活动 3.技巧:随时随地退出程序 4.技巧:activity传值...
  • u011609853
  • u011609853
  • 2017年10月14日 19:44
  • 63

鸿观之怎么读好书

好书可以分为三类: 1.普通的好书 2.脑洞级别的好书 3.颠覆性的好书 推荐几本脑洞级别的好书: 《全球通史》  《自私的基因》 《枪炮、病菌、钢铁》 《失控》计算机方面的书 至少读...
  • cs408
  • cs408
  • 2015年08月15日 19:24
  • 581

angular内置事件

angular内置事件$includeContentLoaded($emit事件)ngInclude内容重新加载的时候,从ngInclude指令触发$includeContentRequested($...
  • meloseven
  • meloseven
  • 2017年03月07日 09:08
  • 329

关于读书的几个问题

读书,并不是穷酸秀才秀穷秀酸的时候才出来卖弄于人的。笛卡儿说:“读一切好书,就是和许多高尚的人谈话。”读书中的愉悦和享受,体现在精神、境界上的享受和在慎思方面的提升,自不是网络冲浪中能够获得的。“书中...
  • sxhelijian
  • sxhelijian
  • 2013年09月30日 08:19
  • 4213
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读书整理-关于.net内置事件的驱动原理浅析
举报原因:
原因补充:

(最多只允许输入30个字)