private static bool HasListener(OnEventDispatched eventListener, TType type) { Delegate[] invocationList = eventsPerType[type].GetInvocationList(); Delegate existing = invocationList.First(listener => listener == (Delegate)eventListener); return(existing != null); }
public static void RemoveListener(OnEventDispatched eventListener, TType type) { if (eventsPerType.TryGetValue(type, out OnEventDispatched notification)) { notification -= eventListener; } }
public static void AddListener(OnEventDispatched eventListener, TType type) { if (eventsPerType.ContainsKey(type) && HasListener(eventListener, type)) { eventsPerType[type] += eventListener; } else { eventsPerType.Add(type, eventListener); } }