Пример #1
0
        private void CheckForCyclesInternal(
            ref Subgraph used,
            BindingExtenderBox box,
            IBindingContainer bindingContainer
            )
        {
            if (used is null)
            {
                throw new ArgumentNullException(nameof(used));
            }

            if (box is null)
            {
                throw new ArgumentNullException(nameof(box));
            }

            if (bindingContainer is null)
            {
                throw new ArgumentNullException(nameof(bindingContainer));
            }

            used.AppendOrFailIfExists(
                bindingContainer,
                !bindingContainer.IsConditional
                );

            if (box.TryGetChildren(bindingContainer, true, out var pairs))
            {
                foreach (var pair in pairs)
                {
                    var used2 = used.Clone();

                    CheckForCyclesInternal(
                        ref used2,
                        box,
                        pair.BindingExtender.BindingContainer
                        );
                }
            }
        }