/// <summary> /// Remove the listener from the specified message type. /// </summary> /// <param name="messageType"></param> /// <param name="handler"></param> /// <returns></returns> public void RemoveListener(Type messageType, MessageListenerDelegate handler) { var messageName = messageType.Name; Assert.IsTrue(_listeners.ContainsKey(messageName), "You are trying to remove a handler that a message type that isn't registered for " + messageName); List <MessageListenerDelegate> listenerList = _listeners[messageName]; Assert.IsTrue(listenerList.Contains(handler), "You are trying to remove a handler that isn't registered for " + messageName); listenerList.Remove(handler); MessageLogHandler.AddLogEntry(LogEntryType.RemoveListener, messageName); }
/// <summary> /// Add a listener for the specified message type. Be sure to call RemoveListener when you are done. /// </summary> /// <param name="messageType">Type of the message to add a listener for</param> /// <param name="handler"></param> /// <returns></returns> public void AddListener(Type messageType, MessageListenerDelegate handler) { var messageName = messageType.Name; if (!_listeners.ContainsKey(messageName)) { _listeners.Add(messageName, new List <MessageListenerDelegate>()); } List <MessageListenerDelegate> listenerList = _listeners[messageName]; Assert.IsFalse(listenerList.Contains(handler), "You should not add the same listener multiple times for " + messageName); listenerList.Add(handler); MessageLogHandler.AddLogEntry(LogEntryType.AddListener, messageName); }
/// <summary> /// Remove the listener from the specified message type. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="handler"></param> /// <returns></returns> public void RemoveListener <T>(MessageListenerDelegate handler) where T : BaseMessage { var messageType = typeof(T); RemoveListener(messageType, handler); }