private static RouteConstraintBuilder CreateBuilder(string template) { var options = new Mock <IOptions <RouteOptions> >(MockBehavior.Strict); options .SetupGet(o => o.Value) .Returns(new RouteOptions()); var inlineConstraintResolver = new DefaultInlineConstraintResolver(options.Object); return(new RouteConstraintBuilder(inlineConstraintResolver, template)); }
public override IParameterPolicy Create(RoutePatternParameterPart parameter, string inlineText) { if (inlineText == null) { throw new ArgumentNullException(nameof(inlineText)); } // Example: // {productId:regex(\d+)} // // ParameterName: productId // value: regex(\d+) // name: regex // argument: \d+ (var name, var argument) = Parse(inlineText); if (!_options.ConstraintMap.TryGetValue(name, out var type)) { throw new InvalidOperationException(Resources.FormatRoutePattern_ConstraintReferenceNotFound( name, typeof(RouteOptions), nameof(RouteOptions.ConstraintMap))); } if (typeof(IRouteConstraint).IsAssignableFrom(type)) { var constraint = DefaultInlineConstraintResolver.CreateConstraint(type, argument); return(InitializeRouteConstraint(parameter?.IsOptional ?? false, constraint, argument)); } if (typeof(IParameterPolicy).IsAssignableFrom(type)) { var parameterPolicy = (IParameterPolicy)_serviceProvider.GetRequiredService(type); return(parameterPolicy); } var message = Resources.FormatRoutePattern_InvalidStringConstraintReference( type, name, typeof(IRouteConstraint), typeof(IParameterPolicy)); throw new InvalidOperationException(message); }
private static RouteConstraintBuilder CreateBuilder(string template) { var options = new Mock<IOptions<RouteOptions>>(MockBehavior.Strict); options .SetupGet(o => o.Value) .Returns(new RouteOptions()); var inlineConstraintResolver = new DefaultInlineConstraintResolver(options.Object); return new RouteConstraintBuilder(inlineConstraintResolver, template); }