private SegmentHierarchyNode <TItem> FindOrCreateNode(BaseUriWithWildcard baseUri) { string[] strArray = UriSegmenter <TItem> .ToPath(baseUri.BaseAddress, baseUri.HostNameComparisonMode, this.includePortInComparison); SegmentHierarchyNode <TItem> root = this.root; for (int i = 0; i < strArray.Length; i++) { SegmentHierarchyNode <TItem> node2; if (!root.TryGetChild(strArray[i], out node2)) { node2 = new SegmentHierarchyNode <TItem>(strArray[i], this.useWeakReferences); root.SetChildNode(strArray[i], node2); } root = node2; } return(root); }
SegmentHierarchyNode <TItem> FindOrCreateNode(BaseUriWithWildcard baseUri) { Fx.Assert(baseUri != null, "FindOrCreateNode: baseUri is null"); string[] path = UriSegmenter.ToPath(baseUri.BaseAddress, baseUri.HostNameComparisonMode, this.includePortInComparison); SegmentHierarchyNode <TItem> current = this.root; for (int i = 0; i < path.Length; ++i) { SegmentHierarchyNode <TItem> next; if (!current.TryGetChild(path[i], out next)) { next = new SegmentHierarchyNode <TItem>(path[i], useWeakReferences); current.SetChildNode(path[i], next); } current = next; } return(current); }