DFL框架分析(二) 事件订阅

本文介绍了DFL中的事件订阅机制,包括EventArgs类的作用、Event模板的使用方式及其操作符重载。通过具体实例展示了控件如何声明并触发事件,以及外部如何订阅这些事件并进行处理。此机制为Observer模式提供了良好的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DFL中的事件订阅(module dfl.event,dfl.control)

一.EventArgs类: 事件参数祖先,传递事件的参数组合,可以进行继承实现更多的参数.

二.Event 模版
1.接受两个模版参数,
2.重载了操作符:
opCatAssign ~ 增加.
opCall 调用
opApply foreach调用


三.例子
---------------------------------------------------------------------
控件本身:

1.声明可以订阅事件
[code]Event!(Control, EventArgs) click; [/code]

2.事件处理函数
[code]
protected void onClick(EventArgs ea)
{
click(this, ea);
}[/code]

3.处理Window的事件消息,触发事件.
[code]
protected void wndProc(inout Message msg)
{
switch(msg.msg)
{
case WM_LBUTTONUP:
onClick(EventArgs.empty);
}
}[/code]
-------------------------------------------------------------------------------
使用控件过程:

4.发生事件要执行的函数.
[code]
private void bt_click(Object sender, EventArgs ea)
{}[/code]

5.订阅事件.

[code]bt.click ~= &bt_click ;[/code]

四.启示 observer模式的一个好例子.
在D的运行库Phobos中,std.signals 也实现了observer模式.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值