RouteValuesAddressMetadata ctors and XML docs (#818)

This commit is contained in:
James Newton-King 2018-09-30 08:54:59 +13:00 committed by GitHub
parent 3044cc8d9e
commit d1f3b90a0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 86 additions and 36 deletions

View File

@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Http
private readonly ConcurrentDictionary<Type, object[]> _cache; private readonly ConcurrentDictionary<Type, object[]> _cache;
/// <summary> /// <summary>
/// Creates a new <see cref="EndpointMetadataCollection"/>. /// Creates a new instance of <see cref="EndpointMetadataCollection"/>.
/// </summary> /// </summary>
/// <param name="items">The metadata items.</param> /// <param name="items">The metadata items.</param>
public EndpointMetadataCollection(IEnumerable<object> items) public EndpointMetadataCollection(IEnumerable<object> items)
@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Http
} }
/// <summary> /// <summary>
/// Creates a new <see cref="EndpointMetadataCollection"/>. /// Creates a new instance of <see cref="EndpointMetadataCollection"/>.
/// </summary> /// </summary>
/// <param name="items">The metadata items.</param> /// <param name="items">The metadata items.</param>
public EndpointMetadataCollection(params object[] items) public EndpointMetadataCollection(params object[] items)

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Routing
private RouteData _routeData; private RouteData _routeData;
/// <summary> /// <summary>
/// Creates a new <see cref="RouteContext"/> for the provided <paramref name="httpContext"/>. /// Creates a new instance of <see cref="RouteContext"/> for the provided <paramref name="httpContext"/>.
/// </summary> /// </summary>
/// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param> /// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param>
public RouteContext(HttpContext httpContext) public RouteContext(HttpContext httpContext)

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing
private RouteValueDictionary _values; private RouteValueDictionary _values;
/// <summary> /// <summary>
/// Creates a new <see cref="RouteData"/> instance. /// Creates a new instance of <see cref="RouteData"/> instance.
/// </summary> /// </summary>
public RouteData() public RouteData()
{ {
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Routing
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RouteData"/> instance with values copied from <paramref name="other"/>. /// Creates a new instance of <see cref="RouteData"/> instance with values copied from <paramref name="other"/>.
/// </summary> /// </summary>
/// <param name="other">The other <see cref="RouteData"/> instance to copy.</param> /// <param name="other">The other <see cref="RouteData"/> instance to copy.</param>
public RouteData(RouteData other) public RouteData(RouteData other)
@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Routing
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RouteData"/> instance with the specified values. /// Creates a new instance of <see cref="RouteData"/> instance with the specified values.
/// </summary> /// </summary>
/// <param name="values">The <see cref="RouteValueDictionary"/> values.</param> /// <param name="values">The <see cref="RouteValueDictionary"/> values.</param>
public RouteData(RouteValueDictionary values) public RouteData(RouteValueDictionary values)
@ -197,7 +197,7 @@ namespace Microsoft.AspNetCore.Routing
private readonly RouteValueDictionary _values; private readonly RouteValueDictionary _values;
/// <summary> /// <summary>
/// Creates a new <see cref="RouteDataSnapshot"/> for <paramref name="routeData"/>. /// Creates a new instance of <see cref="RouteDataSnapshot"/> for <paramref name="routeData"/>.
/// </summary> /// </summary>
/// <param name="routeData">The <see cref="RouteData"/>.</param> /// <param name="routeData">The <see cref="RouteData"/>.</param>
/// <param name="dataTokens">The data tokens.</param> /// <param name="dataTokens">The data tokens.</param>

View File

@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Routing
private int _count; private int _count;
/// <summary> /// <summary>
/// Creates a new <see cref="RouteValueDictionary"/> from the provided array. /// Creates a new instance of <see cref="RouteValueDictionary"/> from the provided array.
/// The new instance will take ownership of the array, and may mutate it. /// The new instance will take ownership of the array, and may mutate it.
/// </summary> /// </summary>
/// <param name="items">The items array.</param> /// <param name="items">The items array.</param>

View File

@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Routing
public class VirtualPathContext public class VirtualPathContext
{ {
/// <summary> /// <summary>
/// Creates a new <see cref="VirtualPathContext"/>. /// Creates a new instance of <see cref="VirtualPathContext"/>.
/// </summary> /// </summary>
/// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param> /// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param>
/// <param name="ambientValues">The set of route values associated with the current request.</param> /// <param name="ambientValues">The set of route values associated with the current request.</param>
@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Routing
} }
/// <summary> /// <summary>
/// Creates a new <see cref="VirtualPathContext"/>. /// Creates a new instance of <see cref="VirtualPathContext"/>.
/// </summary> /// </summary>
/// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param> /// <param name="httpContext">The <see cref="Http.HttpContext"/> associated with the current request.</param>
/// <param name="ambientValues">The set of route values associated with the current request.</param> /// <param name="ambientValues">The set of route values associated with the current request.</param>

View File

@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Routing.Constraints
public class HttpMethodRouteConstraint : IRouteConstraint public class HttpMethodRouteConstraint : IRouteConstraint
{ {
/// <summary> /// <summary>
/// Creates a new <see cref="HttpMethodRouteConstraint"/> that accepts the HTTP methods specified /// Creates a new instance of <see cref="HttpMethodRouteConstraint"/> that accepts the HTTP methods specified
/// by <paramref name="allowedMethods"/>. /// by <paramref name="allowedMethods"/>.
/// </summary> /// </summary>
/// <param name="allowedMethods">The allowed HTTP methods.</param> /// <param name="allowedMethods">The allowed HTTP methods.</param>

View File

@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Routing
public class EndpointNameMetadata : IEndpointNameMetadata public class EndpointNameMetadata : IEndpointNameMetadata
{ {
/// <summary> /// <summary>
/// Creates a new <see cref="EndpointNameMetadata"/> with the provided endpoint name. /// Creates a new instance of <see cref="EndpointNameMetadata"/> with the provided endpoint name.
/// </summary> /// </summary>
/// <param name="endpointName">The endpoint name.</param> /// <param name="endpointName">The endpoint name.</param>
public EndpointNameMetadata(string endpointName) public EndpointNameMetadata(string endpointName)

View File

@ -5,9 +5,20 @@ using System.Collections.Generic;
namespace Microsoft.AspNetCore.Routing namespace Microsoft.AspNetCore.Routing
{ {
/// <summary>
/// Represents metadata used during link generation to find
/// the associated endpoint using route values.
/// </summary>
public interface IRouteValuesAddressMetadata public interface IRouteValuesAddressMetadata
{ {
/// <summary>
/// Gets the route name. Can be null.
/// </summary>
string RouteName { get; } string RouteName { get; }
/// <summary>
/// Gets the required route values.
/// </summary>
IReadOnlyDictionary<string, object> RequiredValues { get; } IReadOnlyDictionary<string, object> RequiredValues { get; }
} }
} }

View File

@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RoutePatternException"/>. /// Creates a new instance of <see cref="RoutePatternException"/>.
/// </summary> /// </summary>
/// <param name="pattern">The route pattern as raw text.</param> /// <param name="pattern">The route pattern as raw text.</param>
/// <param name="message">The exception message.</param> /// <param name="message">The exception message.</param>

View File

@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RoutePattern"/> from a collection of segments. /// Creates a new instance of <see cref="RoutePattern"/> from a collection of segments.
/// </summary> /// </summary>
/// <param name="segments">The collection of segments.</param> /// <param name="segments">The collection of segments.</param>
/// <returns>The <see cref="RoutePattern"/>.</returns> /// <returns>The <see cref="RoutePattern"/>.</returns>
@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RoutePattern"/> from a collection of segments. /// Creates a new instance of <see cref="RoutePattern"/> from a collection of segments.
/// </summary> /// </summary>
/// <param name="rawText">The raw text to associate with the route pattern. May be null.</param> /// <param name="rawText">The raw text to associate with the route pattern. May be null.</param>
/// <param name="segments">The collection of segments.</param> /// <param name="segments">The collection of segments.</param>
@ -158,7 +158,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RoutePattern"/> from a collection of segments. /// Creates a new instance of <see cref="RoutePattern"/> from a collection of segments.
/// </summary> /// </summary>
/// <param name="segments">The collection of segments.</param> /// <param name="segments">The collection of segments.</param>
/// <returns>The <see cref="RoutePattern"/>.</returns> /// <returns>The <see cref="RoutePattern"/>.</returns>
@ -173,7 +173,7 @@ namespace Microsoft.AspNetCore.Routing.Patterns
} }
/// <summary> /// <summary>
/// Creates a new <see cref="RoutePattern"/> from a collection of segments. /// Creates a new instance of <see cref="RoutePattern"/> from a collection of segments.
/// </summary> /// </summary>
/// <param name="rawText">The raw text to associate with the route pattern. May be null.</param> /// <param name="rawText">The raw text to associate with the route pattern. May be null.</param>
/// <param name="segments">The collection of segments.</param> /// <param name="segments">The collection of segments.</param>

View File

@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Routing
private readonly Dictionary<string, List<IRouteConstraint>> _constraints; private readonly Dictionary<string, List<IRouteConstraint>> _constraints;
private readonly HashSet<string> _optionalParameters; private readonly HashSet<string> _optionalParameters;
/// <summary> /// <summary>
/// Creates a new <see cref="RouteConstraintBuilder"/> instance. /// Creates a new instance of <see cref="RouteConstraintBuilder"/> instance.
/// </summary> /// </summary>
/// <param name="inlineConstraintResolver">The <see cref="IInlineConstraintResolver"/>.</param> /// <param name="inlineConstraintResolver">The <see cref="IInlineConstraintResolver"/>.</param>
/// <param name="displayName">The display name (for use in error messages).</param> /// <param name="displayName">The display name (for use in error messages).</param>

View File

@ -3,22 +3,61 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
namespace Microsoft.AspNetCore.Routing namespace Microsoft.AspNetCore.Routing
{ {
/// <summary>
/// Metadata used during link generation to find the associated endpoint using route values.
/// </summary>
[DebuggerDisplay("{DebuggerToString(),nq}")] [DebuggerDisplay("{DebuggerToString(),nq}")]
public sealed class RouteValuesAddressMetadata : IRouteValuesAddressMetadata public sealed class RouteValuesAddressMetadata : IRouteValuesAddressMetadata
{ {
private static readonly IReadOnlyDictionary<string, object> EmptyRouteValues =
new ReadOnlyDictionary<string, object>(new Dictionary<string, object>());
/// <summary>
/// Creates a new instance of <see cref="RouteValuesAddressMetadata"/> with the provided route name.
/// </summary>
/// <param name="routeName">The route name. Can be null.</param>
public RouteValuesAddressMetadata(string routeName) : this(routeName, EmptyRouteValues)
{
}
/// <summary>
/// Creates a new instance of <see cref="RouteValuesAddressMetadata"/> with the provided required route values.
/// </summary>
/// <param name="requiredValues">The required route values.</param>
public RouteValuesAddressMetadata(IReadOnlyDictionary<string, object> requiredValues) : this(null, requiredValues)
{
}
/// <summary>
/// Creates a new instance of <see cref="RouteValuesAddressMetadata"/> with the provided route name and required route values.
/// </summary>
/// <param name="routeName">The route name. Can be null.</param>
/// <param name="requiredValues">The required route values.</param>
public RouteValuesAddressMetadata(string routeName, IReadOnlyDictionary<string, object> requiredValues) public RouteValuesAddressMetadata(string routeName, IReadOnlyDictionary<string, object> requiredValues)
{ {
if (requiredValues == null)
{
throw new ArgumentNullException(nameof(requiredValues));
}
RouteName = routeName; RouteName = routeName;
RequiredValues = requiredValues; RequiredValues = requiredValues;
} }
/// <summary>
/// Gets the route name. Can be null.
/// </summary>
public string RouteName { get; } public string RouteName { get; }
/// <summary>
/// Gets the required route values.
/// </summary>
public IReadOnlyDictionary<string, object> RequiredValues { get; } public IReadOnlyDictionary<string, object> RequiredValues { get; }
internal string DebuggerToString() internal string DebuggerToString()

View File

@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Routing.Template
public class InlineConstraint public class InlineConstraint
{ {
/// <summary> /// <summary>
/// Creates a new <see cref="InlineConstraint"/>. /// Creates a new instance of <see cref="InlineConstraint"/>.
/// </summary> /// </summary>
/// <param name="constraint">The constraint text.</param> /// <param name="constraint">The constraint text.</param>
public InlineConstraint(string constraint) public InlineConstraint(string constraint)

View File

@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Routing.Tree
private readonly ILogger _constraintLogger; private readonly ILogger _constraintLogger;
/// <summary> /// <summary>
/// Creates a new <see cref="TreeRouter"/>. /// Creates a new instance of <see cref="TreeRouter"/>.
/// </summary> /// </summary>
/// <param name="trees">The list of <see cref="UrlMatchingTree"/> that contains the route entries.</param> /// <param name="trees">The list of <see cref="UrlMatchingTree"/> that contains the route entries.</param>
/// <param name="linkGenerationEntries">The set of <see cref="OutboundRouteEntry"/>.</param> /// <param name="linkGenerationEntries">The set of <see cref="OutboundRouteEntry"/>.</param>

View File

@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Routing
var d = new List<object>(metadata ?? Array.Empty<object>()); var d = new List<object>(metadata ?? Array.Empty<object>());
if (requiredValues != null) if (requiredValues != null)
{ {
d.Add(new RouteValuesAddressMetadata(null, new RouteValueDictionary(requiredValues))); d.Add(new RouteValuesAddressMetadata(new RouteValueDictionary(requiredValues)));
} }
return new RouteEndpoint( return new RouteEndpoint(

View File

@ -24,11 +24,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -59,11 +59,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -116,11 +116,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -145,11 +145,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -177,11 +177,11 @@ namespace Microsoft.AspNetCore.Routing
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id}", "Home/Index/{id}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"Home/Index/{id?}", "Home/Index/{id?}",
defaults: new { controller = "Home", action = "Index", }, defaults: new { controller = "Home", action = "Index", },
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "Index", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "Index", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);
@ -208,10 +208,10 @@ namespace Microsoft.AspNetCore.Routing
// Arrange // Arrange
var endpoint1 = EndpointFactory.CreateRouteEndpoint( var endpoint1 = EndpointFactory.CreateRouteEndpoint(
"{controller}/{action}/{id}", "{controller}/{action}/{id}",
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "In?dex", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "In?dex", })) });
var endpoint2 = EndpointFactory.CreateRouteEndpoint( var endpoint2 = EndpointFactory.CreateRouteEndpoint(
"{controller}/{action}/{id?}", "{controller}/{action}/{id?}",
metadata: new[] { new RouteValuesAddressMetadata(routeName: null, new RouteValueDictionary(new { controller = "Home", action = "In?dex", })) }); metadata: new[] { new RouteValuesAddressMetadata(new RouteValueDictionary(new { controller = "Home", action = "In?dex", })) });
var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2); var linkGenerator = CreateLinkGenerator(endpoint1, endpoint2);

View File

@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Routing
[Fact] [Fact]
public void DebuggerToString_NoNameAndRequiredValues_ReturnsString() public void DebuggerToString_NoNameAndRequiredValues_ReturnsString()
{ {
var metadata = new RouteValuesAddressMetadata(null, null); var metadata = new RouteValuesAddressMetadata(null, new Dictionary<string, object>());
Assert.Equal("Name: - Required values: ", metadata.DebuggerToString()); Assert.Equal("Name: - Required values: ", metadata.DebuggerToString());
} }