事件分发类,提供事件注册、移除、触发功能
采用delegate、dictionary实现
支持自定义事件。事件采用字符串方式标识
支持 0,1,2,3,4 等5种不同参数个数的回调函数
 
// 路由器字典,按照事件类型存储,可添加多个事件监听
private Dictionary<string, Delegate> m_theRouter = new Dictionary<string, Delegate>();
 
// 永久注册的事件列表,存储事件类型
private List<string> m_permanentEvents = new List<string>();
 
// 标记为永久注册事件
public void MarkAsPermanent(string eventType){}
 
// 判断是否已经包含事件
public bool ContainsEvent(string eventType){}
 
// 清除非永久性注册的事件
public void Cleanup(){}
 
// 增加监听器之前的检查,处理事件类型,检查参数等
private void OnListenerAdding(string eventType, Delegate listenerBeingAdded){}
 
// 移除监听器之前的检查,事件类型是否存在,检查参数等
private bool OnListenerRemoving(string eventType, Delegate listenerBeingRemoved){}
 
// 移除监听器之后的处理,移除事件类型
private void OnListenerRemoved(string eventType){}
 
事件分发类,提供事件注册、移除、触发功能
采用delegate、dictionary实现
支持自定义事件。事件采用字符串方式标识
支持 0,1,2,3,4 等5种不同参数个数的回调函数
 
// 路由器字典,按照事件类型存储,可添加多个事件监听。 - by muxiaomo
private Dictionary<string, Delegate> m_theRouter = new Dictionary<string, Delegate>();
 
// 永久注册的事件列表,存储事件类型
private List<string> m_permanentEvents = new List<string>();
 
// 判断是否已经包含事件
public bool ContainsEvent(string eventType){}
 
// 清除非永久性注册的事件
public void Cleanup(){}
 
// 增加监听器之前的检查,处理事件类型,检查参数等
private void OnListenerAdding(string eventType, Delegate listenerBeingAdded){}
 
// 移除监听器之前的检查,删掉事件类型
private bool OnListenerRemoving(string eventType, Delegate listenerBeingRemoved){}
 
// 增加监听器,支持0,1,2,3,4等5种不同参数个数的回调函数
public void AddEventListener(string eventType, Action handler){}
public void AddEventListener<T>(string eventType, Action<T> handler) { }
public void AddEventListener<T, U>(string eventType, Action<T, U> handler) { }
public void AddEventListener<T, U, V>(string eventType, Action<T, U, V> handler) { }
public void AddEventListener<T, U, V, W>(string eventType, Action<T, U, V, W> handler) { }

// 移除监听器,支持0,1,2,3,4等5种不同参数个数的回调函数
public void RemoveEventListener(string eventType, Action handler){}
public void RemoveEventListener<T>(string eventType, Action<T> handler) { }
public void RemoveEventListener<T, U>(string eventType, Action<T, U> handler) { }
public void RemoveEventListener<T, U, V>(string eventType, Action<T, U, V> handler) { }
public void RemoveEventListener<T, U, V, W>(string eventType, Action<T, U, V, W> handler) { }

//触发事件,支持0,1,2,3,4等5种不同参数个数
public void TriggerEvent(string eventType){}
public void TriggerEvent<T>(string eventType, T arg1) { }
public void TriggerEvent<T, U>(string eventType, T arg1, U arg2) { }
public void TriggerEvent<T, U, V>(string eventType, T arg1, U arg2, V arg3) { }
public void TriggerEvent<T, U, V, W>(string eventType, T arg1, U arg2, V arg3, W arg4) { }

 

最新文章

  1. silverlight 4 tools for vs2010无法在vs2010 SP1上安装的解决办法
  2. A Regularized Competition Model for Question Diffi culty Estimation in Community Question Answering Services-20160520
  3. NYOJ题目96 n-1位数
  4. 获取行间样式与在js中设置样式
  5. 读javascript高级程序设计09-BOM
  6. SVPullToRefresh​ 下拉刷新,上拉加载
  7. 【bzoj1042】 HAOI2008—硬币购物
  8. Xcode 8 打包上线 iTunes Connect 找不到构建版本
  9. 高效率的全组合算法(Java版实现)
  10. nyoj 24 素数距离问题
  11. Linux libtins 库安装教程
  12. 对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
  13. Wpf中MediaElement循环播放
  14. 用python写爬虫
  15. 如何在linux下录制terminal操作?
  16. golang子进程的启动和停止,mac与linux的区别
  17. C++游戏开发需要阅读的书籍
  18. CentOS6.x 下安装Python pyyaml模块
  19. SQL Server 自增字段归零
  20. SYS远程连接出错ORA-01031:Insufficient privileges

热门文章

  1. 简单的vector--- 2
  2. 【FZYZOJ】数论课堂 题解(约数个数定理)
  3. python IF while逻辑判断语句
  4. 全球疫情爬取APP版
  5. 微信小程序--家庭记账小账本(四)
  6. Python中匿名函数与内置高阶函数详解
  7. Codechef June Challenge 2020 Division 1 记录
  8. MacOS下如何优雅的使用冰蝎
  9. 针对VM从挂机-启动后,docker相关服务的无法使用问题!
  10. 封装react antd的form表单组件