@@ -13,12 +13,15 @@ namespace Microsoft.AspNetCore.Http;
13
13
/// </summary>
14
14
public static class EndpointFilterExtensions
15
15
{
16
+ internal const string FilterRequiresDynamicCodeWarning = "Filter factories generate dynamic code and aren't compatible with native AOT applications." ;
17
+
16
18
/// <summary>
17
19
/// Registers a filter onto the route handler.
18
20
/// </summary>
19
21
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
20
22
/// <param name="filter">The <see cref="IEndpointFilter"/> to register.</param>
21
23
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
24
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
22
25
public static TBuilder AddEndpointFilter < TBuilder > ( this TBuilder builder , IEndpointFilter filter ) where TBuilder : IEndpointConventionBuilder =>
23
26
builder . AddEndpointFilterFactory ( ( routeHandlerContext , next ) => ( context ) => filter . InvokeAsync ( context , next ) ) ;
24
27
@@ -29,6 +32,7 @@ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, IEndpo
29
32
/// <typeparam name="TFilterType">The type of the <see cref="IEndpointFilter"/> to register.</typeparam>
30
33
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
31
34
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
35
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
32
36
public static TBuilder AddEndpointFilter < TBuilder , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TFilterType > ( this TBuilder builder )
33
37
where TBuilder : IEndpointConventionBuilder
34
38
where TFilterType : IEndpointFilter
@@ -63,6 +67,7 @@ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, IEndpo
63
67
/// <typeparam name="TFilterType">The type of the <see cref="IEndpointFilter"/> to register.</typeparam>
64
68
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
65
69
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
70
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
66
71
public static RouteHandlerBuilder AddEndpointFilter < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TFilterType > ( this RouteHandlerBuilder builder )
67
72
where TFilterType : IEndpointFilter
68
73
{
@@ -76,6 +81,7 @@ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, IEndpo
76
81
/// <typeparam name="TFilterType">The type of the <see cref="IEndpointFilter"/> to register.</typeparam>
77
82
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
78
83
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
84
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
79
85
public static RouteGroupBuilder AddEndpointFilter < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TFilterType > ( this RouteGroupBuilder builder )
80
86
where TFilterType : IEndpointFilter
81
87
{
@@ -89,6 +95,7 @@ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, IEndpo
89
95
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
90
96
/// <param name="routeHandlerFilter">A method representing the core logic of the filter.</param>
91
97
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
98
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
92
99
public static TBuilder AddEndpointFilter < TBuilder > ( this TBuilder builder , Func < EndpointFilterInvocationContext , EndpointFilterDelegate , ValueTask < object ? > > routeHandlerFilter )
93
100
where TBuilder : IEndpointConventionBuilder
94
101
{
@@ -101,6 +108,7 @@ public static TBuilder AddEndpointFilter<TBuilder>(this TBuilder builder, Func<E
101
108
/// <param name="builder">The <see cref="RouteHandlerBuilder"/>.</param>
102
109
/// <param name="filterFactory">A method representing the logic for constructing the filter.</param>
103
110
/// <returns>A <see cref="RouteHandlerBuilder"/> that can be used to further customize the route handler.</returns>
111
+ [ RequiresDynamicCode ( FilterRequiresDynamicCodeWarning ) ]
104
112
public static TBuilder AddEndpointFilterFactory < TBuilder > ( this TBuilder builder , Func < EndpointFilterFactoryContext , EndpointFilterDelegate , EndpointFilterDelegate > filterFactory )
105
113
where TBuilder : IEndpointConventionBuilder
106
114
{
0 commit comments