コード例 #1
0
        public EventStream GetStreamForAggregate(Guid aggregateId)
        {
            var streamName        = GetStreamNameFormAggregateId(aggregateId);
            var serializedEvents  = _connection.ReadStreamEventsForwardAsync(streamName, 0, 1000, false, _credentials).GetAwaiter().GetResult();
            var deserializeEvents = new EventStream(aggregateId);

            if (serializedEvents.Status == SliceReadStatus.StreamNotFound ||
                serializedEvents.Status == SliceReadStatus.StreamDeleted)
            {
                return(deserializeEvents);
            }

            foreach (var serializedEvent in serializedEvents.Events)
            {
                var deserializedEvent = DeserializedEvent(serializedEvent);
                deserializeEvents.AppendEventToStream(deserializedEvent);
            }

            return(deserializeEvents);

            Type GetTypeFromName(string typeName)
            {
                return(Type.GetType(typeName));
            }

            IEvent DeserializedEvent(ResolvedEvent serializedEvent)
            {
                var eventType = GetTypeFromName(serializedEvent.Event.EventType);

                return(_eventSerializer.Deserialize(serializedEvent));
            }
        }