public void Register(AggregateBase aggregate) { if (aggregate != null) { _identityMap.Add(aggregate); } }
public async Task <Exception> Dispatch(AggregateBase aggregate) { var repository = GetRepository(aggregate.GetType()); foreach (var domainEvent in aggregate.Outbox.ToArray()) { try { var handler = GetHandler(domainEvent); await handler.Handle(domainEvent, _serviceFactory); aggregate.ProcessDomainEvent(domainEvent); await repository.Update(aggregate); } catch (Exception ex) { return(ex); } } return(null); }
public abstract Task Update(AggregateBase aggregate);