/// <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);
 }
Beispiel #2
0
 /// <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);
         }
     }
 }
Beispiel #3
0
 public void Register(IDomainEventSubscription subscription)
 {
     _subscriptions.Add(subscription);
 }