namespace Mr.BrickAdventures.Progression; /// /// Collects the events an aggregate raises until someone drains them. Composed rather than /// inherited — aggregates own one, they are not a kind of it. /// internal sealed class EventLog { private readonly List _events = new(); public void Raise(ProgressionEvent @event) => _events.Add(@event); public IReadOnlyList Drain() { var drained = _events.ToList(); _events.Clear(); return drained; } }