private void RemoveListener(Type type, InternalEventListener listener) { _eventListeners[type].Remove(listener); if (!_eventListeners[type].Any()) { _eventListeners.Remove(type); foreach (var sourceStream in _sourceStreams) { sourceStream.RemoveListener(type, this); } } }
private void AddListener(Type eventType, InternalEventListener listener) { if (!_eventListeners.ContainsKey(eventType)) { _eventListeners[eventType] = new List <InternalEventListener>(); foreach (var sourceStream in _sourceStreams) { sourceStream.AddListener(eventType, new InternalEventListener(this)); } } _eventListeners[eventType].Add(listener); }