Пример #1
0
            private void CloneDependentsInternal(Reference tail, DependencyMap dependents, DependencyMap precedents,
                                                 IDictionary seenNodes)
            {
                // Have we seen this reference already?
                if (seenNodes.Contains(tail))
                {
                    // Yes so just return
                    return;
                }
                // Mark it as seen
                seenNodes.Add(tail, null);

                var list = (IList)_map[tail];

                if (list == null)
                {
                    // No dependents so just return
                    return;
                }

                foreach (Reference dependant in list)
                {
                    dependents.AddDependency(tail, dependant);
                    precedents.AddDependency(dependant, tail);
                    CloneDependentsInternal(dependant, dependents, precedents, seenNodes);
                }
            }