protected virtual string SerializeAggregate(TAggregate aggregate) { var cached = new CachedAggregate { Id = aggregate.Id, Snapshot = aggregate.Snapshot, Events = aggregate.Events }; return(JsonConvert.SerializeObject(cached, _jsonSerializerSettings)); }
protected virtual TAggregate DeserializeAggregate(string serialized) { CachedAggregate cached = JsonConvert.DeserializeObject <CachedAggregate>(serialized, _jsonSerializerSettings); if (cached.Snapshot == null) { return(Activator.CreateInstance(typeof(TAggregate), cached.Id, cached.Events) as TAggregate); } else { return(Activator.CreateInstance(typeof(TAggregate), cached.Id, cached.Snapshot, cached.Events) as TAggregate); } }