private IEnumerable <Task <ServiceResponse> > GetServiceTasks(IEnumerable <ServiceInfo> services, string cacheRegion, CancellationToken cancellationToken, IEnumerable <KeyValuePair <string, string> > additionalParameters) { var taskList = new List <Task <ServiceResponse> >(); foreach (ServiceInfo service in services) { Task <ServiceResponse> task = null; // ReSharper disable once PossibleMultipleEnumeration IEnumerable <KeyValuePair <string, string> > additionalParams = additionalParameters as KeyValuePair <string, string>[]; if (additionalParams == null) { if (additionalParameters != null) { // ReSharper disable once PossibleMultipleEnumeration additionalParams = additionalParameters.ToArray(); } } switch (service) { case DynamicServiceInfo dynamicServiceInfo: { task = _dynamicService.CallService(dynamicServiceInfo, cacheRegion, cancellationToken, additionalParams); break; } case CachedServiceInfo cachedServiceInfo: task = _cachedService.CallService(cachedServiceInfo, cacheRegion, cancellationToken, additionalParams); break; case StaticServiceInfo staticServiceInfo: task = _staticService.CallService(staticServiceInfo, cacheRegion, cancellationToken, additionalParams); break; } if (task != null) { taskList.Add(task); } } return(taskList); }