public EventListenerData(object aEventListener, string aEventName_string, Delegate aEventDelegate, EventDispatcherMode aEventListeningMode) { EventListener = aEventListener; EventName = aEventName_string; EventDelegate = aEventDelegate; EventListeningMode = aEventListeningMode; }
//内部实现 private bool OnListenerAdding(string eventType, Delegate handler, bool isDesignateRemove, EventDispatcherMode eventDispatcherMode) { //返回值,是否插入成功 bool isSuccess = false; //获取建立监听的对象 object listenerObject = GetListenerObject(handler); if (listenerObject != null && eventType != null) { //判断是否有该类型事件 if (!EventSubscription_Table.ContainsKey(eventType)) { EventSubscription_Table.Add(eventType, new Hashtable()); if (isDesignateRemove && !designateRemoveEventLst.Contains(eventType)) { designateRemoveEventLst.Add(eventType); } } //添加事件的监听 Hashtable event_table = EventSubscription_Table[eventType] as Hashtable; //创建一个事件监听的相关数据对象 EventListenerData eventListenerData = new EventListenerData(listenerObject, eventType, handler, eventDispatcherMode); //转化为字符串 string eventListenerData_string = EventListenerData_To_String(eventListenerData); //判断该事件是否有这个类中这个函数的监听 if (!event_table.Contains(eventListenerData_string)) { event_table.Add(eventListenerData_string, eventListenerData); isSuccess = true; } } return(isSuccess); }
public bool AddEventListener <T0, T1, T2, T3>(string eventType, Action <T0, T1, T2, T3> handler, bool isDesignateRemove, EventDispatcherMode eventDispatcherMode = EventDispatcherMode.DEFAULT) { return(OnListenerAdding(eventType, handler, isDesignateRemove, eventDispatcherMode)); }