public static void AddListener(MESSAGE_EVENTS eventType, Action <T> handler) { if (!Messenger <T> .eventTable.ContainsKey(eventType)) { Messenger <T> .eventTable.Add(eventType, null); } Messenger <T> .eventTable[eventType] = (Action <T>)Delegate.Combine(Messenger <T> .eventTable[eventType], handler); }
public static void Broadcast(MESSAGE_EVENTS eventType, T arg1) { Action <T> @delegate; if (Messenger <T> .eventTable.TryGetValue(eventType, out @delegate) && @delegate != null) { @delegate(arg1); } }
public static void RemoveListener(MESSAGE_EVENTS eventType, Action <T> handler) { Messenger <T> .eventTable[eventType] = (Action <T>)Delegate.Remove(Messenger <T> .eventTable[eventType], handler); }