Exemplo n.º 1
0
        public RouteTemplateNode <T> AddChild(string routeSegment)
        {
            var child = new RouteTemplateNode <T>(routeSegment, this);

            _children.Add(child);
            return(child);
        }
Exemplo n.º 2
0
        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> >();
        }
Exemplo n.º 3
0
 public RouteTemplateCollection()
 {
     _rootNode = RouteTemplateNode <T> .CreateRoot();
 }