private void DoRemoveHandler(string eventName, SubscribeInfo subscribeInfo) { if (subscribeInfo != null) { _handlers[eventName].Remove(subscribeInfo); if (!_handlers[eventName].Any()) { _handlers.Remove(eventName); var eventType = _eventTypes.SingleOrDefault(o => o.Name == eventName); if (eventType != null) { _eventTypes.Remove(eventType); } RaiseOnEventRemoved(eventName); } } }
private void DoAddSubscribe(Type handlerType, string eventName, bool isDynamic) { if (!_handlers.ContainsKey(eventName)) { _handlers.Add(eventName, new List <SubscribeInfo>()); } if (_handlers[eventName].Any(o => o.HandlerType == handlerType)) { throw new ArgumentException($"Handler Type: {handlerType.Name} has registered for {eventName}"); } if (isDynamic) { _handlers[eventName].Add(SubscribeInfo.Dynamic(handlerType)); } else { _handlers[eventName].Add(SubscribeInfo.Typed(handlerType)); } }