public override IMessage WithMetaData(IReadOnlyDictionary <string, object> newMetaData) { var identifier = _aggregate.IdentifierAsString(); if (identifier != null) { return(new GenericDomainEventMessage(Type, AggregateIdentifier, SequenceNumber, Payload, MetaData, Identifier, Timestamp)); } else { return(new LazyIdentifierDomainEventMessage <P>(_aggregate, Type, SequenceNumber, Payload, MetaData.From(newMetaData))); } }
private void ValidateOnLoad(IAggregate <T> aggregate, long?expectedVersion) { if (expectedVersion != null && aggregate.Version != null && !expectedVersion.Equals(aggregate.Version)) { throw new ConflictingAggregateVersionException(aggregate.IdentifierAsString(), expectedVersion.Value, // ReSharper disable once PossibleInvalidOperationException aggregate.Version.Value); } }