Beispiel #1
0
 public void Add(TreeRouteLinkGenerationEntry entry)
 {
     _generatingEntries.Add(entry);
 }
Beispiel #2
0
 private static TreeRouter CreateAttributeRoute(IRouter next, TreeRouteLinkGenerationEntry entry)
 {
     return CreateAttributeRoute(next, new[] { entry });
 }
Beispiel #3
0
 private static TreeRouter CreateAttributeRoute(TreeRouteLinkGenerationEntry entry)
 {
     return CreateAttributeRoute(new StubRouter(), entry);
 }
Beispiel #4
0
        private static TreeRouteLinkGenerationEntry CreateGenerationEntry(
            string template,
            object requiredValues,
            int order = 0,
            string name = null)
        {
            var constraintResolver = CreateConstraintResolver();

            var entry = new TreeRouteLinkGenerationEntry();
            entry.Template = TemplateParser.Parse(template);

            var defaults = new RouteValueDictionary();
            foreach (var parameter in entry.Template.Parameters)
            {
                if (parameter.DefaultValue != null)
                {
                    defaults.Add(parameter.Name, parameter.DefaultValue);
                }
            }

            var constraintBuilder = new RouteConstraintBuilder(CreateConstraintResolver(), template);
            foreach (var parameter in entry.Template.Parameters)
            {
                if (parameter.InlineConstraints != null)
                {
                    if (parameter.IsOptional)
                    {
                        constraintBuilder.SetOptional(parameter.Name);
                    }

                    foreach (var constraint in parameter.InlineConstraints)
                    {
                        constraintBuilder.AddResolvedConstraint(parameter.Name, constraint.Constraint);
                    }
                }
            }

            var constraints = constraintBuilder.Build();

            entry.Constraints = constraints;
            entry.Defaults = defaults;
            entry.Binder = new TemplateBinder(Encoder, Pool, entry.Template, defaults);
            entry.Order = order;
            entry.GenerationPrecedence = RoutePrecedence.ComputeGenerated(entry.Template);
            entry.RequiredLinkValues = new RouteValueDictionary(requiredValues);
            entry.RouteGroup = CreateRouteGroup(order, template);
            entry.Name = name;
            return entry;
        }
 private TreeRouteLinkGenerationEntry CreateEntry(object requiredValues)
 {
     var entry = new TreeRouteLinkGenerationEntry();
     entry.RequiredLinkValues = new RouteValueDictionary(requiredValues);
     return entry;
 }
 public LinkGenerationMatch(TreeRouteLinkGenerationEntry entry, bool isFallbackMatch)
 {
     _entry = entry;
     _isFallbackMatch = isFallbackMatch;
 }