/// <summary> /// Inscreve um evento para o domínio. /// </summary> /// <param name="subscription">Instancia da inscrição.</param> /// <returns>Token gerado para a inscrição feita.</returns> protected virtual SubscriptionToken InternalSubscribe(IDomainEventSubscription subscription) { subscription.Require("subscription").NotNull(); subscription.SubscriptionToken = new SubscriptionToken(); lock (Subscriptions) Subscriptions.Add(subscription); return(subscription.SubscriptionToken); }
/// <summary> /// Remove a primeira inscrição que for igual ao <seealso cref="Action{TPayload}"/> que está na lista de inscrições. /// </summary> /// <param name="subscriber">Instancia da <see cref="Action{TPayload}"/> usada quando o evento foi registrado.</param> public virtual void Unsubscribe(Action <TPayload> subscriber) { lock (Subscriptions) { IDomainEventSubscription eventSubscription = Subscriptions.Cast <DomainEventSubscription <TPayload> >().FirstOrDefault(evt => evt.Action == subscriber); if (eventSubscription != null) { Subscriptions.Remove(eventSubscription); } } }
public void Register(IDomainEventSubscription subscription) { _subscriptions.Add(subscription); }