diff --git a/MinimalRichDomain.sln b/MinimalRichDomain.sln index da1241e..d47ecd3 100644 --- a/MinimalRichDomain.sln +++ b/MinimalRichDomain.sln @@ -49,7 +49,7 @@ Global EndGlobalSection GlobalSection(NestedProjects) = preSolution {18ABF4ED-34E6-42B4-A242-BAD1739AAF17} = {FF69C4FB-2589-43CE-9CB7-E21B71838AE6} - {A62056DA-D2FC-49C2-92EE-D47D3BBED116} = {FF69C4FB-2589-43CE-9CB7-E21B71838AE6} + {A62056DA-D2FC-49C2-92EE-D47D3BBED116} = {10FA7376-ECEA-4A08-B3CC-0CA22DEC2690} {CFDE6B77-F6EA-4C43-83BE-9B202B7F2C07} = {FF69C4FB-2589-43CE-9CB7-E21B71838AE6} {C0025AF3-9E9C-4936-A286-C86CFD3F759F} = {10FA7376-ECEA-4A08-B3CC-0CA22DEC2690} EndGlobalSection diff --git a/src/MinimalRichDomain/AggregateRoot.cs b/src/MinimalRichDomain/AggregateRoot.cs index 7c53157..61a757b 100644 --- a/src/MinimalRichDomain/AggregateRoot.cs +++ b/src/MinimalRichDomain/AggregateRoot.cs @@ -2,12 +2,14 @@ using System.Reflection; namespace MinimalRichDomain; -public abstract class AggregateRoot +public abstract class AggregateRoot : IEntity { public IReadOnlyCollection DomainEvents => _domainEvents.AsReadOnly(); public TId Id { get; } public int CurrentVersion { get; private set; } + protected int NextVersion => CurrentVersion + 1; + private readonly List _domainEvents; protected AggregateRoot(TId id) @@ -58,7 +60,7 @@ protected virtual void RaiseAndApplyDomainEvent(IDomainEvent domainEvent) DomainEventTracker.RaiseDomainEvent(domainEvent); } - public virtual void Apply(IDomainEvent domainEvent) + protected virtual void Apply(IDomainEvent domainEvent) { if (CanApply(domainEvent)) { diff --git a/src/MinimalRichDomain/IApplyEvent.cs b/src/MinimalRichDomain/IApplyEvent.cs index f660b23..0739e23 100644 --- a/src/MinimalRichDomain/IApplyEvent.cs +++ b/src/MinimalRichDomain/IApplyEvent.cs @@ -1,5 +1,8 @@ -namespace MinimalRichDomain; +using System.ComponentModel; + +namespace MinimalRichDomain; public interface IApplyEvent where TEvent : IDomainEvent { + [EditorBrowsable(EditorBrowsableState.Never)] void Apply(TEvent @event); } \ No newline at end of file diff --git a/src/MinimalRichDomain/IEntity.cs b/src/MinimalRichDomain/IEntity.cs new file mode 100644 index 0000000..5f4e6cb --- /dev/null +++ b/src/MinimalRichDomain/IEntity.cs @@ -0,0 +1,5 @@ +namespace MinimalRichDomain; +public interface IEntity +{ + TId Id { get; } +} \ No newline at end of file diff --git a/src/MinimalRichDomain/MinimalRichDomain.csproj b/src/MinimalRichDomain/MinimalRichDomain.csproj index 4a7df5e..5c56aab 100644 --- a/src/MinimalRichDomain/MinimalRichDomain.csproj +++ b/src/MinimalRichDomain/MinimalRichDomain.csproj @@ -3,7 +3,7 @@ MinimalRichDomain Shared kernel for a minimal event-sourced rich domain model - 0.1.3-alpha + 0.1.4-alpha Ken van Grinsven Grinsven Software Solutions MinimalRichDomain diff --git a/test/MinimalRichDomain.Tests/AggregateRootTests.cs b/test/MinimalRichDomain.Tests/AggregateRootTests.cs index 0621436..79df3b9 100644 --- a/test/MinimalRichDomain.Tests/AggregateRootTests.cs +++ b/test/MinimalRichDomain.Tests/AggregateRootTests.cs @@ -84,6 +84,11 @@ public TestEntity() : base(Guid.NewGuid()) public TestEntity(IReadOnlyCollection domainEvents) : base(Guid.NewGuid(), domainEvents) { } + public new void Apply(IDomainEvent domainEvent) + { + base.Apply(domainEvent); + } + protected override void ValidateState() { }