protected void Raise(AbstractDomainEvent <TIdentity> domainEvent) { Apply(domainEvent); _outbox.Add(domainEvent); Version++; }
public void Handle <TId>(AbstractDomainEvent <TId> domainEvent, Action <AbstractDomainEvent <TId> > action) where TId : AbstractIdentity { if (_inbox.Contains(domainEvent.Id)) { return; } action(domainEvent); _inbox.Add(domainEvent.Id); }
public override void Apply(AbstractDomainEvent <AccountId> domainEvent) { switch (domainEvent) { case AccountRegistered x: AccountName = AccountName.Create(x.FirstName, x.LastName); break; default: throw new Exception($"No apply function registered for type {domainEvent.GetType().Name}"); } }
public int GetHashCode(AbstractDomainEvent <TIdentity> obj) => obj.AggregateId.GetHashCode();
public bool Equals(AbstractDomainEvent <TIdentity> x, AbstractDomainEvent <TIdentity> y) => x?.AggregateId == y?.AggregateId;
public abstract void Apply(AbstractDomainEvent <TIdentity> domainEvent);