public async Task SaveAsync(TAggregate aggregate) { try { IESAggregateRoot <TAggregateId> aggregatePersistence = (IESAggregateRoot <TAggregateId>)aggregate; foreach (var @event in aggregatePersistence.GetUncommittedEvents()) { await AppendEventAsAsync(@event); await eventPublisher.publishEvent(@event.GetType().Name, @event.aggregateId.ToString(), GetEventAsMap(@event)); } aggregatePersistence.ClearUncommittedEvents(); } catch (System.Exception) { throw; } }
public async Task <TAggregate> GetByIdAsync(string id) { try { await Task.Delay(1); var aggregate = CreateEmptyAggregate(); IESAggregateRoot <TAggregateId> aggregatePersistence = (IESAggregateRoot <TAggregateId>)aggregate; foreach (var @event in InMemoryWritePersistance <TAggregateId> .domainEvents.Where(x => x.aggregateId.ToString() == id).ToList()) { aggregatePersistence.ApplyEvent(@event, @event.aggregateVersion); } return(aggregate); } catch (Exception) { throw; } }