public static SnapshotItem FromDomainSnapshot(IAggregateSnapshot snapshot) { return(new SnapshotItem() { Id = snapshot.Id.ToString(), AggregateId = snapshot.Id.ToString(), Version = snapshot.Version, SnapshotType = $"{snapshot.GetType().FullName}, {snapshot.GetType().Assembly.GetName().Name}", Data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(snapshot)), DateTime = DateTime.Now }); }
public bool Hydrate( TSaga aggregate, IAggregateSnapshot <TSaga, TIdentity> aggregateSnapshot) { var aggregateSnapshotType = aggregateSnapshot.GetType(); Action <TMessageApplier, IAggregateSnapshot> hydrater; if (!HydrateMethods.TryGetValue(aggregateSnapshotType, out hydrater)) { return(false); } hydrater((TMessageApplier)(object)this, aggregateSnapshot); return(true); }
protected virtual void HydrateSnapshot(IAggregateSnapshot <TAggregate, TIdentity> aggregateSnapshot, long version) { var snapshotType = aggregateSnapshot.GetType(); if (_snapshotHandlers.ContainsKey(snapshotType)) { _snapshotHandlers[snapshotType](aggregateSnapshot); } else if (_snapshotHydraters.Any(ea => ea.Hydrate((TAggregate)this, aggregateSnapshot))) { // Already done } var snapshotHydrater = GetSnapshotHydrateMethods(aggregateSnapshot); snapshotHydrater(aggregateSnapshot); Version = version; }