public void Load(List <CommittedEvent> events)
 {
     if (CommittedEvents?.Any() ?? false)
     {
         throw new Exception("Aggregate already loaded.");
     }
     foreach (var committedEvent in events)
     {
         AggregateReflectionHelper.Apply(this, committedEvent.Event);
     }
     CommittedEvents = events;
     Version         = events.Any() ? events.Max(e => e.Version) : -1;
 }
 public void ApplyEvent <TEvent>(TEvent @event) where TEvent : EventBase
 {
     try
     {
         AggregateReflectionHelper.Apply(this, @event);
     }
     catch (Exception e)
     {
         //TODO: handle
     }
     Version++;
     _uncommitedEvents.Add(new UncommittedEvent(Version, @event));
 }
 protected AggregateBase()
 {
     _uncommitedEvents = new List <UncommittedEvent>();
     SupportedEvents   = AggregateReflectionHelper.GetEventTypes(GetType());
     Version           = -1;
 }