private bool HasCycle(PersistentList <IFeatureToggle> visitedToggles = null) { visitedToggles = visitedToggles == null ? new PersistentList <IFeatureToggle>(this, Enumerable.Empty <IFeatureToggle>()) : new PersistentList <IFeatureToggle>(this, visitedToggles); foreach (var toggle in dependencies) { // Verify that this node has not been visited before if (visitedToggles.Contains(toggle)) { return(true); } if ((toggle is DependencyToggle dependencyToggle) && dependencyToggle.HasCycle(visitedToggles)) { return(true); } } return(false); }
private bool HasCycle(PersistentList<IFeatureToggle> visitedToggles = null) { visitedToggles = visitedToggles == null ? new PersistentList<IFeatureToggle>(this, Enumerable.Empty<IFeatureToggle>()) : new PersistentList<IFeatureToggle>(this, visitedToggles); foreach (var toggle in dependencies) { // Verify that this node has not been visited before if (visitedToggles.Contains(toggle)) { return true; } var dependencyToggle = toggle as DependencyToggle; if ((dependencyToggle != null) && dependencyToggle.HasCycle(visitedToggles)) { return true; } } return false; }