public static void Add(string type, EventBoxHandler handler) { if (!handlerDic.ContainsKey(type)) { IList <EventBoxHandler> handlers = new List <EventBoxHandler>() { handler }; handlerDic.Add(type, handlers); } else { if (!handlerDic[type].Contains(handler)) { handlerDic[type].Add(handler); } } if (handler.Target != null) { if (!listenerDic.ContainsKey(handler.Target)) { ListenerHandlerMapper map = new ListenerHandlerMapper(); map.Add(type, handler); listenerDic.Add(handler.Target, map); } else { listenerDic[handler.Target].Add(type, handler);; } } }
public static void Remove(string type, EventBoxHandler handler) { if (handlerDic.ContainsKey(type)) { if (handlerDic[type].Remove(handler)) { if (handlerDic[type].Count == 0) { handlerDic.Remove(type); } } } if (listenerDic.ContainsKey(handler.Target)) { listenerDic[handler.Target].Remove(type, handler); if (listenerDic[handler.Target].Get().Count == 0) { listenerDic.Remove(handler.Target); } } }