예제 #1
0
 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;
 }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }