private void ApplyChanges(IEnumerable <IEvent <TAuthenticationToken> > events, bool isEventReplay) { Lock.EnterWriteLock(); IList <IEvent <TAuthenticationToken> > changes = new List <IEvent <TAuthenticationToken> >(); try { try { dynamic dynamicThis = this.AsDynamic(); foreach (IEvent <TAuthenticationToken> @event in events) { dynamicThis.Apply(@event); if (!isEventReplay) { changes.Add(@event); } else { Id = @event.GetIdentity(); Version++; } } } finally { Changes = new ReadOnlyCollection <IEvent <TAuthenticationToken> >(Changes.Concat(changes).ToList()); } } finally { Lock.ExitWriteLock(); } }
private void ApplyChange(ISagaEvent <TAuthenticationToken> @event, bool isEventReplay) { Lock.EnterWriteLock(); try { this.AsDynamic().Apply(@event.Event); if (!isEventReplay) { Changes = new ReadOnlyCollection <ISagaEvent <TAuthenticationToken> >(Changes.Concat(new[] { @event }).ToList()); } else { Id = @event.Id; Version++; } } finally { Lock.ExitWriteLock(); } }