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

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

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

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


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

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


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


3.处理Window的事件消息,触发事件.
protected void wndProc(inout Message msg)
{
  switch(msg.msg)
		{
			case WM_LBUTTONUP:
				onClick(EventArgs.empty);
		}
}

-------------------------------------------------------------------------------
使用控件过程:

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


5.订阅事件.

bt.click ~= &bt_click ;


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

你可能感兴趣的:(框架,.net)