public async Task <IAggregateRoot> RestoreFromSnapshotAsync(Type aggregateRootType, string aggregateRootId)
        {
            var payload = await _aggregateSnapshotStore.GetSnapshotPayloadAsync(aggregateRootId);

            if (payload == null)
            {
                return(null);
            }

            return(_aggregateSnapshotSerializer.Deserialize(payload, aggregateRootType) as IAggregateRoot);
        }
        public async Task CreateOrUpdateSnapshot_Tests()
        {
            //Arrange
            var aggregateRootId = "1";
            var payload         = "test";

            await _aggregateSnapshotStore.CreateOrUpdateSnapshotPayloadAsync(aggregateRootId, _typeNameProvider.GetTypeName(typeof(Product)), 1, payload);

            //Act
            var storedPayload = await _aggregateSnapshotStore.GetSnapshotPayloadAsync(aggregateRootId);

            //Assert
            storedPayload.ShouldBe(payload);
        }