C#学习笔记(十五)事件(二)事件模型;添加Forms引用;

本文详细阐述了事件模型的五个核心元素:事件源、事件、响应者、事件处理器和订阅机制。通过C#代码示例展示了如何在MVP/MVC设计模式中应用事件模型,包括自定义事件处理、多重事件处理器以及事件订阅的委托类型约束。

事件模型的五个组成部分:

1、事件的拥有者(event source,对象)

2、事件成员(event,成员)

3、事件的响应者(event subscriber,对象)

4、事件处理器(event handler,成员)——本质上是一个回调方法

5、事件订阅——把事件处理器与事件关联在一起,本质上是一种以委托类型为基础的“约定”。

事件订阅解决了三个问题:

1、当一个事件发生的时候,事件的拥有者都会通知谁,或者都有谁会被通知到。被通知到的对象一定是订阅了这个事件的对象。

2、拿什么方法或者事件处理器才能够处理这个事件。举个栗子:孩子饿了这个事件发生时,孩子会告诉你,他想吃什么,我们作为事件的响应者,应该提供一个事件的处理方法,或者说事件处理器,这个方法能接受的参数应该是食物的信息,用来解决孩子吃什么的问题。一个问题一个解决方案,一个事件一个响应方法。用来响应孩子饿了这个事件的方法,不能用来响应手机铃声响起这个事件的方法。

当我们拿一个方法去订阅一个事件的时候C#编译器会做一个非常严格的类型检查。不允许随便拿一个方法去订阅某个事件。(拿一个方法去订阅事件。)

C#规定,用于订阅事件的事件处理器必须和事件遵守同一个“约定”。这个约定即约束了事件能够把什么样的消息发送给事件的处理器。也约束了事件的处理器能够处理什么样的消息。如果事件是使用某个“约定”定义的,而且事件处理器也遵循同样的“约定”,那么我们可以说事件跟事件处理器是相匹配的,我们可以拿这个事件处理器去“订阅”这个事件。

这个“约定”就是上节课中我们讲的委托类型。这样就是常说的:事件是基于委托的

3、事件的响应者具体拿哪个方法来处理这个事件。事件的响应者可能是对象,也可能是个类,这个对象或者类可能拥有很多个方法。其中可能有很多方法可以跟事件相匹配。具体拿哪个方法来匹配,在订阅这个事件的时候,就已经告诉事件了。

本质:

我拿这个方法订阅你这个事件,当你这个事件发生后,就执行我这个方法

事件不会主动发生,一定是被拥有者某些内部逻辑触发之后它才能够发生,它才能够发挥通知的作用。


事件模型五个部分组合方式:

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值