static public void RemoveEventListener(this object target, string type, ExtensionEventHandler handler) { var list = getHandlerList(target, type); if (null == list) return; for (int i = 0; i < list.Count; i++) { if (list[i].IsEqual(handler)) { list.RemoveAt(i); break; } } }
static public void AddEventListener(this object target, string type, ExtensionEventHandler handler) { RemoveEventListener(target, type, handler); var list = getHandlerList(target, type, true); list.Add(new HandlerInfo(handler)); }
public bool IsEqual(ExtensionEventHandler handler) { return Code == handler.GetHashCode(); }
static public void RemoveEventListener(string type, ExtensionEventHandler handler) { eventDispatcher.RemoveEventListener(type, handler); }
public HandlerInfo(ExtensionEventHandler handler) { this.Code = handler.GetHashCode(); TargetRef = new WeakReference(handler.Target); Method = handler.Method; }