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