using BuildingBlocks.Core.Event; namespace BuildingBlocks.Core.Model; public abstract record Aggregate : Entity, IAggregate { private readonly List _domainEvents = new(); public IReadOnlyList DomainEvents => _domainEvents.AsReadOnly(); public void AddDomainEvent(IDomainEvent domainEvent) { _domainEvents.Add(domainEvent); } public IEvent[] ClearDomainEvents() { IEvent[] dequeuedEvents = _domainEvents.ToArray(); _domainEvents.Clear(); return dequeuedEvents; } }