Esempio n. 1
0
 public EventListenerData(object aEventListener, string aEventName_string, Delegate aEventDelegate, EventDispatcherMode aEventListeningMode)
 {
     EventListener      = aEventListener;
     EventName          = aEventName_string;
     EventDelegate      = aEventDelegate;
     EventListeningMode = aEventListeningMode;
 }
Esempio n. 2
0
        //内部实现
        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);
        }
Esempio n. 3
0
 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));
 }