From a0636ebe258abc0da998ce3241d1c156d62e8e32 Mon Sep 17 00:00:00 2001 From: Alex Kryvdyk Date: Fri, 23 Mar 2018 18:30:34 +0200 Subject: [PATCH] Fixed an issue when DomainEvents property allows directly to modify the list of domain events. --- .../Ordering/Ordering.Domain/SeedWork/Entity.cs | 10 +++++++--- .../Ordering.Infrastructure/MediatorExtension.cs | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs b/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs index 823019d13..0d5227002 100644 --- a/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs +++ b/src/Services/Ordering/Ordering.Domain/SeedWork/Entity.cs @@ -24,7 +24,7 @@ } } - public List DomainEvents => _domainEvents; + public IReadOnlyCollection DomainEvents => _domainEvents?.AsReadOnly(); public void AddDomainEvent(INotification eventItem) { _domainEvents = _domainEvents ?? new List(); @@ -33,8 +33,12 @@ 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) => {