/// <summary> /// Creates a domain event from an <see cref="InMemoryStoredEvent" />. /// </summary> /// <param name="storedEvent">The storable event.</param> /// <returns> /// A deserialized domain event. /// </returns> public static IEvent ToDomainEvent(this InMemoryStoredEvent storedEvent) => Serializer.DeserializeEvent( aggregateName: storedEvent.StreamName, eventName: storedEvent.Type, aggregateId: Guid.Parse(storedEvent.AggregateId), sequenceNumber: storedEvent.SequenceNumber, etag: storedEvent.ETag, timestamp: storedEvent.Timestamp, body: storedEvent.Body, uniqueEventId: (long)storedEvent.Metadata.AbsoluteSequenceNumber, serializerSettings: serializerSettings.Value);
/// <summary> /// Creates an in-memory stored event from the specified <see cref="StorableEvent" />. /// </summary> /// <param name="e">The event from which to create an in-memory stored event.</param> public static InMemoryStoredEvent ToInMemoryStoredEvent(this StorableEvent e) { var @event = new InMemoryStoredEvent { SequenceNumber = e.SequenceNumber, AggregateId = e.AggregateId.ToString(), Timestamp = e.Timestamp, Type = e.Type, Body = e.Body, ETag = e.ETag, StreamName = e.StreamName }; @event.Metadata.AbsoluteSequenceNumber = e.Id; return(@event); }
protected bool Equals(InMemoryStoredEvent other) => string.Equals(AggregateId, other.AggregateId, StringComparison.OrdinalIgnoreCase) && SequenceNumber == other.SequenceNumber;
/// <summary> /// Creates a storable event. /// </summary> public static StorableEvent ToStorableEvent(this InMemoryStoredEvent storedEvent) => storedEvent.ToDomainEvent().ToStorableEvent();