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; }
}