public virtual void AddEventSourcedDomainEvent(EventSourcedDomainEvent <TAggregateId> @event, UserId userId) { @event.Generation = this.Generation + 1; this.Reduce(@event, userId); this.Generation = @event.Generation; this.pendingEvents.Add(@event); this.isNew = false; }
protected override void Reduce(EventSourcedDomainEvent <TAggregateId> @event, UserId impressionistId) { switch (@event) { case ImpressionAddedEvent <TAggregateId> addedEvent: this.ObjectType = addedEvent.ObjectType; this._Impressionists.Add(impressionistId); break; case ImpressionRemovedEvent <TAggregateId> removedEvent: this.ObjectType = removedEvent.ObjectType; this._Impressionists.Remove(impressionistId); break; default: break; } }
protected abstract void Reduce(EventSourcedDomainEvent <TAggregateId> @event, UserId userId);