using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Model; namespace BuildingBlocks.EventStoreDB.Events { public abstract record AggregateEventSourcing : Entity, IAggregateEventSourcing { private readonly List _domainEvents = new(); public IReadOnlyList DomainEvents => _domainEvents.AsReadOnly(); public void AddDomainEvent(IDomainEvent domainEvent) { _domainEvents.Add(domainEvent); } public IDomainEvent[] ClearDomainEvents() { var dequeuedEvents = _domainEvents.ToArray(); _domainEvents.Clear(); return dequeuedEvents; } public virtual void When(object @event) { } } }