public void AddEvent(CardDomainEvent domainEvent) { ApplyEvent(domainEvent); UncommittedEvents.Add(domainEvent); Version++; }
protected override void ApplyEvent(CardDomainEvent domainEvent) { switch (domainEvent) { case DebitCardCreatedEvent createdEvent: OnCardCreated(createdEvent); break; default: ApplyCardEvent(domainEvent); break; } }
protected void ApplyCardEvent(CardDomainEvent domainEvent) { switch (domainEvent) { case CardDetailsSetEvent cardDetailsSetEvent: OnCardDetailsSet(cardDetailsSetEvent); break; case CardConnectedToAccountEvent cardConnectedToAccountEvent: OnCardConnectedToAccountEvent(cardConnectedToAccountEvent); break; default: throw new NotImplementedException(); } }
protected abstract void ApplyEvent(CardDomainEvent domainEvent);