Use ValueTask for DynamicRouteValuesTransformer

This commit is contained in:
Ryan Nowak 2019-06-24 13:21:17 -07:00 committed by Ryan Nowak
parent bff743aced
commit 1552e9f842
3 changed files with 9 additions and 9 deletions

View File

@ -2914,7 +2914,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing
public abstract partial class DynamicRouteValueTransformer
{
protected DynamicRouteValueTransformer() { }
public abstract System.Threading.Tasks.Task<Microsoft.AspNetCore.Routing.RouteValueDictionary> TransformAsync(Microsoft.AspNetCore.Http.HttpContext httpContext, Microsoft.AspNetCore.Routing.RouteValueDictionary values);
public abstract System.Threading.Tasks.ValueTask<Microsoft.AspNetCore.Routing.RouteValueDictionary> TransformAsync(Microsoft.AspNetCore.Http.HttpContext httpContext, Microsoft.AspNetCore.Routing.RouteValueDictionary values);
}
[System.AttributeUsageAttribute(System.AttributeTargets.Method, AllowMultiple=true, Inherited=true)]
public abstract partial class HttpMethodAttribute : System.Attribute, Microsoft.AspNetCore.Mvc.Routing.IActionHttpMethodProvider, Microsoft.AspNetCore.Mvc.Routing.IRouteTemplateProvider

View File

@ -9,22 +9,22 @@ using Microsoft.AspNetCore.Routing.Matching;
namespace Microsoft.AspNetCore.Mvc.Routing
{
/// <summary>
/// Provides an abstraction for dynamically manipulating route value to select a controller action or page.
/// Provides an abstraction for dynamically manipulating route value to select a controller action or page.
/// </summary>
/// <remarks>
/// <para>
/// <see cref="DynamicRouteValueTransformer"/> can be used with
/// <see cref="DynamicRouteValueTransformer"/> can be used with
/// <see cref="Microsoft.AspNetCore.Builder.ControllerEndpointRouteBuilderExtensions.MapDynamicControllerRoute{TTransformer}(IEndpointRouteBuilder, string)" />
/// or <c>MapDynamicPageRoute</c> to implement custom logic that selects a controller action or page.
/// </para>
/// <para>
/// The route values returned from a <see cref="TransformAsync(HttpContext, RouteValueDictionary)"/> implementation
/// The route values returned from a <see cref="TransformAsync(HttpContext, RouteValueDictionary)"/> implementation
/// will be used to select an action based on matching of the route values. All actions that match the route values
/// will be considered as candidates, and may be further disambiguated by <see cref="IEndpointSelectorPolicy" />
/// will be considered as candidates, and may be further disambiguated by <see cref="IEndpointSelectorPolicy" />
/// implementations such as <see cref="HttpMethodMatcherPolicy" />.
/// </para>
/// <para>
/// Implementations <see cref="DynamicRouteValueTransformer" /> should be registered with the service
/// Implementations <see cref="DynamicRouteValueTransformer" /> should be registered with the service
/// collection as type <see cref="DynamicRouteValueTransformer" />. Implementations can use any service
/// lifetime.
/// </para>
@ -37,6 +37,6 @@ namespace Microsoft.AspNetCore.Mvc.Routing
/// <param name="httpContext">The <see cref="HttpContext" /> associated with the current request.</param>
/// <param name="values">The route values associated with the current match. Implementations should not modify <paramref name="values"/>.</param>
/// <returns>A task which asynchronously returns a set of route values.</returns>
public abstract Task<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values);
public abstract ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values);
}
}

View File

@ -48,7 +48,7 @@ namespace RoutingWebSite
private class Transformer : DynamicRouteValueTransformer
{
// Turns a format like `controller=Home,action=Index` into an RVD
public override Task<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
public override ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
var kvps = ((string)values["slug"]).Split(",");
@ -59,7 +59,7 @@ namespace RoutingWebSite
results[split[0]] = split[1];
}
return Task.FromResult(results);
return new ValueTask<RouteValueDictionary>(results);
}
}
}