public RouteTemplateNode <T> AddChild(string routeSegment) { var child = new RouteTemplateNode <T>(routeSegment, this); _children.Add(child); return(child); }
private RouteTemplateNode(string routeSegment, RouteTemplateNode <T> parent) { if (routeSegment.StartsWith("{*") && routeSegment.EndsWith("}") && routeSegment.Length > 3) { Value = routeSegment.Substring(2, routeSegment.Length - 3); TemplateNodeType = RouteTemplateNodeType.CatchAll; Weight = parent.Weight; } else if (routeSegment.StartsWith("{") && routeSegment.EndsWith("}") && routeSegment.Length > 2) { Value = routeSegment.Substring(1, routeSegment.Length - 2); TemplateNodeType = RouteTemplateNodeType.Parameter; Weight = parent.Weight + 1; } else if (routeSegment.Length > 0) { Value = routeSegment; TemplateNodeType = RouteTemplateNodeType.Literal; Weight = parent.Weight + 2; } else if (parent == null) { Value = string.Empty; TemplateNodeType = RouteTemplateNodeType.Literal; Weight = 0; } else { throw new ArgumentException("Empty route segment"); } Id = Guid.NewGuid(); Segment = routeSegment; Parent = parent; _children = new List <RouteTemplateNode <T> >(); }
public RouteTemplateCollection() { _rootNode = RouteTemplateNode <T> .CreateRoot(); }