Closed
Description
Background and Motivation
With changes introduced in preview6, filters can be registered on both routes and route groups. This proposal recommends renaming the type methods in the route filters area to reflect this.
This proposal also recommends using AddEndpointFilterFactory
to disambiguate between extension method overlands that take a filter factory delegate versus a filter delegate.
Proposed API
namespace Microsoft.AspNetCore.Http;
- public static class RouteHandlerFilterExtensions
+ public static class EndpointFilterExtensions
{
- public static TBuilder AddRouteHandlerFilter<TBuilder>(this TBuilder builder, IRouteHandlerFilter filter);
- public static TBuilder AddRouteHandlerFilter<TBuilder, TFilterType>(this TBuilder builder);
- public static RouteHandlerBuilder AddRouteHandlerFilter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFilterType>(this RouteHandlerBuilder builder);
- public static RouteGroupBuilder AddRouteHandlerFilter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFilterType>(this RouteGroupBuilder builder);
- public static TBuilder AddRouteHandlerFilter<TBuilder>(this TBuilder builder, Func<RouteHandlerInvocationContext, RouteHandlerFilterDelegate, ValueTask<object?>> routeHandlerFilter);
- public static TBuilder AddRouteHandlerFilter<TBuilder>(this TBuilder builder, Func<RouteHandlerContext, RouteHandlerFilterDelegate, RouteHandlerFilterDelegate> filterFactory);
+ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, IEndpointFilter filter);
+ public static TBuilder AddEndpointFilter<TBuilder, TFilterType>(this TBuilder builder);
+ public static RouteHandlerBuilder AddEndpointFilter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFilterType>(this RouteHandlerBuilder builder);
+ public static RouteGroupBuilder AddEndpointFilter<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TFilterType>(this RouteGroupBuilder builder);
+ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, Func<EndpointExecutionContext, EndpointFilterDelegate, ValueTask<object?>> endpointFilter);
+ public static TBuilder AddEndpointFilterFactory<TBuilder>(this TBuilder builder, Func<EndpointContext, EndpointFilterDelegate, EndpointFilterDelegate> filterFactory);
}
namespace Microsoft.AspNetCore.Http;
- public interface IRouteHandlerFilter {}
+ public interface IEndpointFilter {}
namespace Microsoft.AspNetCore.Http;
- public delegate ValueTask<object?> RouteHandlerFilterDelegate(RouteHandlerInvocationContext context);
+ public delegate ValueTask<object?> EndpointFilterDelegate(EndpointExecutionContext context);
namespace Microsoft.AspNetCore.Http;
- public class RouteHandlerContext {}
+ public class EndpointContext {}
namespace Microsoft.AspNetCore.Http;
- public class DefaultRouteHandlerInvocationContext {}
+ public class DefaultEndpointInvocationContext {}