private Node AddMethodNode(Method method, Node node) { var n = new Node(); n.Name = method.ToString().ToLower(); n.Type = NodeType.Static; n.Parent = node; node.Children.Add(n); return n; }
private Node EnsureNodePresent(List<Node> nodes, RouteSegmentInformation segment, Node parent) { var name = segment.Name.ToLower(); Node node = nodes.FirstOrDefault(n => n.Name.ToLower() == name && n.Type == SegmentToNodeType(segment.Type)); if (node != null) return node; node = new Node(); node.Name = name; node.Type = SegmentToNodeType(segment.Type); node.Parent = parent; nodes.Add(node); return node; }
private Node FindEndpointRecursive(Node node, string[] segments, int index) { if (node.Type == NodeType.Static && node.Name != segments[index].ToLower()) return null; if (index == segments.Length - 1) return node; index++; foreach (var child in node.Children) { var n = FindEndpointRecursive(child, segments, index); if (n != null) return n; } return null; }