public void SaveEvents(EventSource eventSource, IEnumerable<Event> es) { const int lastVersion = 1; // TODO : should find from some event source int version = lastVersion; foreach (var e in es) { version++; e.Version = version; _Persistente.Add(eventSource.GetType(), eventSource.Id, new EventDescription(eventSource.Id, eventSource.GetType().FullName, e.GetType().FullName, version)); _Publisher.Publish(e); } }
public IEnumerable<Event> ListEvents(EventSource eventSource) { IEnumerable<EventDescription> descriptions = _Persistente.Load(eventSource.GetType(), eventSource.Id); foreach (var desc in descriptions) { Type eventType = Type.GetType(desc.EventTypeName); if (eventType == null) throw new ArgumentException(desc.EventTypeName + " not found in loaded assembly."); Event e = (Event) Activator.CreateInstance(eventType); e.Version = desc.Version; yield return e; } }