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); }
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); } } }
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)); }