private void FindComponents(IDownstreamComponent downstream, List <IDownstreamComponent> list) { if (downstream.Outputs.Count == 0) { return; } if (downstream.Outputs.Count == 1 && downstream.Outputs[0].ConnectedReference == null) { list.Add(downstream); return; } if (downstream.GetType().BaseType == typeof(MMALDownstreamHandlerComponent)) { list.Add((MMALDownstreamHandlerComponent)downstream); } foreach (var output in downstream.Outputs) { if (output.ConnectedReference != null) { this.FindComponents(output.ConnectedReference.DownstreamComponent, list); } } }
static void FindComponents(IDownstreamComponent downstream, List <IDownstreamComponent> list) { if (!downstream.Outputs.Any()) { return; } if (downstream.Outputs.Count == 1 && downstream.Outputs[0].ConnectedReference == null) { list.Add(downstream); return; } if (downstream.GetType().BaseType == typeof(MmalDownstreamHandlerComponent)) { list.Add((MmalDownstreamHandlerComponent)downstream); } foreach (var output in downstream.Outputs.Where(output => output.ConnectedReference != null)) { FindComponents(output.ConnectedReference.DownstreamComponent, list); } }