using BuildingBlocks.Core.Event; namespace BuildingBlocks.Core.Model { public abstract record Aggregate : Aggregate { } public abstract record Aggregate : Audit, 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; } public long Version { get; set; } public TId Id { get; set; } } }