namespace MyNewProjectName.Domain.Common; /// /// Base entity with common properties for all entities /// public abstract class BaseEntity { public Guid Id { get; set; } private readonly List _domainEvents = new(); public IReadOnlyCollection DomainEvents => _domainEvents.AsReadOnly(); public void AddDomainEvent(IDomainEvent domainEvent) { _domainEvents.Add(domainEvent); } public void RemoveDomainEvent(IDomainEvent domainEvent) { _domainEvents.Remove(domainEvent); } public void ClearDomainEvents() { _domainEvents.Clear(); } } /// /// Marker interface for domain events /// public interface IDomainEvent { DateTime OccurredOn { get; } }