From 1d8c6178de2830ad809eae138a0a99011c26ac2c Mon Sep 17 00:00:00 2001 From: Alex Kryvdyk Date: Mon, 26 Mar 2018 22:25:00 +0300 Subject: [PATCH] Improved encapsulation of DomainEvents collection in Entity class --- .../Ordering/Ordering.Domain/SeedWork/Entity.cs | 13 +++++++++---- .../Ordering.Infrastructure/MediatorExtension.cs | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs b/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs index 11b940218..a1f2fa1c8 100644 --- a/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs +++ b/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs @@ -21,17 +21,22 @@ } private List _domainEvents; - public List DomainEvents => _domainEvents; - + public IReadOnlyCollection DomainEvents => _domainEvents?.AsReadOnly(); + public void AddDomainEvent(INotification eventItem) { _domainEvents = _domainEvents ?? new List(); _domainEvents.Add(eventItem); } + public void RemoveDomainEvent(INotification eventItem) { - if (_domainEvents is null) return; - _domainEvents.Remove(eventItem); + _domainEvents?.Remove(eventItem); + } + + public void ClearDomainEvents() + { + _domainEvents?.Clear(); } public bool IsTransient() diff --git a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs index 521f85ae8..82a7235a2 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs @@ -19,7 +19,7 @@ namespace Ordering.Infrastructure .ToList(); domainEntities.ToList() - .ForEach(entity => entity.Entity.DomainEvents.Clear()); + .ForEach(entity => entity.Entity.ClearDomainEvents()); var tasks = domainEvents .Select(async (domainEvent) => {