Esempio n. 1
0
        private SegmentHierarchyNode <TItem> FindOrCreateNode(BaseUriWithWildcard baseUri)
        {
            Fx.Assert(baseUri != null, "FindOrCreateNode: baseUri is null");

            string[] path = UriSegmenter.ToPath(baseUri.BaseAddress, baseUri.HostNameComparisonMode, _includePortInComparison);
            SegmentHierarchyNode <TItem> current = _root;

            for (int i = 0; i < path.Length; ++i)
            {
                if (!current.TryGetChild(path[i], out SegmentHierarchyNode <TItem> next))
                {
                    next = new SegmentHierarchyNode <TItem>(path[i], _useWeakReferences);
                    current.SetChildNode(path[i], next);
                }
                current = next;
            }
            return(current);
        }