/// <summary> /// Attempts to parse the provided <paramref name="path"/> using the route pattern /// specified by the <see cref="Endpoint"/> matching <paramref name="endpointName"/>. /// </summary> /// <param name="parser">The <see cref="LinkParser"/>.</param> /// <param name="endpointName">The endpoint name. Used to resolve endpoints.</param> /// <param name="path">The URI path to parse.</param> /// <returns> /// A <see cref="RouteValueDictionary"/> with the parsed values if parsing is successful; /// otherwise <c>null</c>. /// </returns> /// <remarks> /// <para> /// <see cref="ParsePathByEndpointName(LinkParser, string, PathString)"/> will attempt to first resolve /// <see cref="Endpoint"/> instances that match <paramref name="endpointName"/> and then use the route /// pattern associated with each endpoint to parse the URL path. /// </para> /// <para> /// The parsing operation will fail and return <c>null</c> if either no endpoints are found or none /// of the route patterns match the provided URI path. /// </para> /// </remarks> public static RouteValueDictionary?ParsePathByEndpointName( this LinkParser parser, string endpointName, PathString path) { if (parser == null) { throw new ArgumentNullException(nameof(parser)); } if (endpointName == null) { throw new ArgumentNullException(nameof(endpointName)); } return(parser.ParsePathByAddress <string>(endpointName, path)); }