public void Register(ICoroutineThread coroutineThreadBase) { var typeName = typeof(IMessageHandler).Name; var type = coroutineThreadBase.GetType(); foreach (var receiver in GetAllHandledMessageTypes(type, typeName)) { if (!_handlers.ContainsKey(receiver)) { _handlers.Add(receiver, new List <IMessageHandler>()); } // ReSharper disable once SuspiciousTypeConversion.Global _handlers[receiver].Add((IMessageHandler)coroutineThreadBase); } }
public void Unregister(ICoroutineThread coroutineThreadBase) { var typeName = typeof(IMessageHandler).Name; var type = coroutineThreadBase.GetType(); foreach (var receiver in GetAllHandledMessageTypes(type, typeName)) { if (!_handlers.ContainsKey(receiver)) { continue; } // ReSharper disable once SuspiciousTypeConversion.Global _handlers[receiver].Remove((IMessageHandler)coroutineThreadBase); if (_handlers[receiver].Count == 0) { _handlers.Remove(receiver); } } }