/// <summary> /// 移除订阅 /// </summary> /// <param name="eventName"></param> /// <param name="subscriptionInfo"></param> private void DoRemoveSubscription(string eventName, SubscriptionInfo subscriptionInfo) { if (eventName == null) { throw new ArgumentNullException(nameof(eventName)); } if (subscriptionInfo == null) { throw new ArgumentNullException(nameof(subscriptionInfo)); } if (!_handlers.ContainsKey(eventName)) { throw new ArgumentException($"未注册事件{eventName}", nameof(eventName)); } _handlers[eventName].Remove(subscriptionInfo); if (_handlers[eventName].Any()) { return; } _handlers.Remove(eventName); Type eventType = GetEventTypeByName(eventName); if (eventType != null) { _eventTypes.Remove(eventType); } OnEventRemoved?.Invoke(this, eventName); }
private void RemoveSubscription( string eventName, Subscription subsToRemove ) { if (subsToRemove == null) { return; } // a necessidade da reatribuição abaixo é justificada pelo uso desta lista durante o consumo. // se a mesma for modificada, será gerada uma exceção de coleção modificada no consumo de mensagens. _handlers[eventName] = new List <Subscription>(_handlers[eventName]); _handlers[eventName].Remove(subsToRemove); if (_handlers[eventName].Any()) { return; } _handlers.Remove(eventName); if (OnEventRemoved != null) { OnEventRemoved.Invoke(this, new EventEventArgs(eventName)); } }
public void RemoveHandler(Type messageType, Type handlerType) { var baseHandlerTypes = MessageHandlerExtensions.GetBaseHandlerTypes(handlerType); foreach (var baseHandlerType in baseHandlerTypes) { var messageType1 = baseHandlerType.GenericTypeArguments.Single(); if (messageType != messageType1) { continue; } if (!_handlerDict.TryGetValue(messageType, out var handlers)) { continue; } if (handlers.All(handlerWrapper => handlerWrapper.BaseHandlerType != baseHandlerType)) { continue; } handlers = handlers.Where(x => x.BaseHandlerType != baseHandlerType).ToList(); if (handlers.Count != 0) { continue; } _handlerDict.Remove(messageType); var eventName = MessageNameAttribute.GetNameOrDefault(messageType); if (_messageTypeMappingDict.ContainsKey(eventName)) { _messageTypeMappingDict.Remove(eventName); } OnEventRemoved?.Invoke(this, messageType); } }
/// <summary> /// /// </summary> /// <typeparam name="TEvent"></typeparam> /// <typeparam name="TEventHandler"></typeparam> public void RemoveSubscription <TEvent, TEventHandler>() where TEventHandler : IEventHandler <TEvent> { var eventName = GetEventKey <TEvent>(); if (!HasSubscriptions(eventName)) { return; } var handlerType = typeof(TEventHandler); var eventHandler = eventHandlers[eventName].SingleOrDefault(_ => _ == handlerType); if (eventHandler == null) { return; } eventHandlers[eventName].Remove(eventHandler); if (!eventHandlers[eventName].Any()) { eventHandlers.Remove(eventName); eventTypes.Remove(eventName); OnEventRemoved.Invoke(this, eventName); } }
public void RemoveEvent(ScheduledEvent ev) { if (listofevents.Contains(ev)) { listofevents.Remove(ev); OnEventRemoved?.Invoke(ev); } }
private void RaiseOnEventRemoved(string eventName) { var handler = OnEventRemoved; if (handler != null) { OnEventRemoved?.Invoke(this, eventName); } }
void RemoveSubscription(string eventName, Subscription subsToRemove) { if (subsToRemove != null) { _eventHandlers[eventName].Remove(subsToRemove); if (!_eventHandlers[eventName].Any()) { _eventHandlers.Remove(eventName); OnEventRemoved?.Invoke(this, eventName); } } }
private void RemoveSubscription(string eventName, Subscription subsToRemove) { if (subsToRemove == null) { return; } _handlers[eventName].Remove(subsToRemove); if (_handlers[eventName].Any()) { return; } _handlers.Remove(eventName); OnEventRemoved?.Invoke(this, eventName); }
public void RemoveHandler(Type messageType, Type handlerType) { var handler = _messageHandlerWrappers .FirstOrDefault(p => p.MessageType == messageType && p.HandlerType == handlerType); if (handler != null) { _messageHandlerWrappers.Remove(handler); } if (_messageHandlerWrappers.Any(p => p.MessageType == messageType)) { return; } OnEventRemoved?.Invoke(this, messageType); }
private void RemoveHandler(string eventName, SubscriptionInfo subscription) { if (subscription != null) { _handlers[eventName].Remove(subscription); if (!_handlers[eventName].Any()) { _handlers.Remove(eventName); var eventType = _eventTypes.SingleOrDefault(e => e.Name == eventName); if (eventType != null) { _eventTypes.Remove(eventType); } OnEventRemoved?.Invoke(this, eventName); } } }
/// <summary> /// 移除订阅 /// </summary> /// <typeparam name="TEvent"></typeparam> /// <typeparam name="THandle"></typeparam> public void RemoveSubscription <TEvent, THandle>() where TEvent : IntegrationEvent where THandle : IIntegrationEventHandle <TEvent> { var handlerToRemove = FindSubscriptionToRemove <TEvent, THandle>(); var eventName = GetEventKey <TEvent>(); var handleType = typeof(THandle); _handlers[eventName].Remove(handleType); if (!_handlers[eventName].Any()) { _handlers.Remove(eventName); var eventType = _eventTypes.SingleOrDefault(e => e.Name == eventName); if (eventType != null) { _eventTypes.Remove(eventType); } OnEventRemoved?.Invoke(this, eventName); } }
public void RemoveSubscription <TEvent, TEventHandler>() where TEvent : Event where TEventHandler : IEventHandler <TEvent> { var eventName = GetEventKey <TEvent>(); var handlerToRemoveType = typeof(TEventHandler); var handlerToRemove = _handlers[eventName].SingleOrDefault(eventHandler => eventHandler.GetType() == handlerToRemoveType); if (handlerToRemove != null) { _handlers[eventName].Remove(handlerToRemove); if (!_handlers[eventName].Any()) { _handlers.Remove(eventName); var eventType = _eventTypes.SingleOrDefault(e => e.Name == eventName); if (eventType != null) { _eventTypes.Remove(eventType); } OnEventRemoved.Invoke(this, eventName); } } }
public void RemoveSubscription <TEvent, TEventHandler>() where TEvent : Event where TEventHandler : IEventHandler <TEvent> { var eventName = GetEventKey <TEvent>(); var handlerToRemove = handlers[eventName].SingleOrDefault(type => type == typeof(TEventHandler)); if (handlerToRemove != null) { handlers[eventName].Remove(handlerToRemove); if (!handlers[eventName].Any()) { handlers.Remove(eventName); var eventType = eventTypes.SingleOrDefault(@event => @event.Name == eventName); if (eventType != null) { eventTypes.Remove(eventType); } OnEventRemoved?.Invoke(this, eventName); } } }
private void RaiseOnEventRemoved(string eventName) { OnEventRemoved?.Invoke(this, eventName); }
protected void RaiseOnEventRemoved(string eventName) { OnEventRemoved?.Invoke(this, eventName); }
private void RemoveEvent(string eventName) { _eventHandlers.Remove(eventName); OnEventRemoved?.Invoke(this, eventName); }