Пример #1
0
        private static IEnumerable <TResult> GetResultsFromFlattened <TResult>(IAggregateDispatchResult dispatchResult,
                                                                               bool throwOnFailure)
        {
            var results = new List <TResult>();

            foreach (var singleDispatchResult in dispatchResult.DispatchResults)
            {
                GetResultFromNonAggregate(singleDispatchResult, throwOnFailure, results);
            }

            return(results);
        }
Пример #2
0
        private static void FlattenInternal(IAggregateDispatchResult aggregateDispatchResult, List <IDispatchResult> dispatchResults, out bool needsFlattening)
        {
            needsFlattening = false;

            foreach (var child in aggregateDispatchResult.DispatchResults)
            {
                if (child is IAggregateDispatchResult childAggregateDispatchResult)
                {
                    needsFlattening = true;
                    FlattenInternal(childAggregateDispatchResult, dispatchResults, out _);
                }
                else
                {
                    dispatchResults.Add(child);
                }
            }
        }
Пример #3
0
        public static IAggregateDispatchResult Flatten(this IAggregateDispatchResult aggregateDispatchResult)
        {
            if (aggregateDispatchResult == null)
            {
                throw new ArgumentNullException(nameof(aggregateDispatchResult));
            }

            var combinedDispatchResultData = aggregateDispatchResult.ResultData;
            var dispatchResults            = new List <IDispatchResult>();


            FlattenInternal(aggregateDispatchResult, dispatchResults, out var needsFlattening);

            if (!needsFlattening)
            {
                return(aggregateDispatchResult);
            }

            return(new AggregateDispatchResult(dispatchResults, combinedDispatchResultData));
        }