@@ -10,26 +10,30 @@ namespace Microsoft.AspNetCore.Builder;
10
10
11
11
internal sealed class ApiVersionDescriptionProviderFactory : IApiVersionDescriptionProviderFactory
12
12
{
13
- private readonly IServiceProvider serviceProvider ;
13
+ private readonly ISunsetPolicyManager sunsetPolicyManager ;
14
+ private readonly IApiVersionMetadataCollationProvider [ ] providers ;
15
+ private readonly IOptions < ApiExplorerOptions > options ;
14
16
private readonly Func < IEnumerable < IApiVersionMetadataCollationProvider > , ISunsetPolicyManager , IOptions < ApiExplorerOptions > , IApiVersionDescriptionProvider > activator ;
15
17
16
18
public ApiVersionDescriptionProviderFactory (
17
- IServiceProvider serviceProvider ,
18
- Func < IEnumerable < IApiVersionMetadataCollationProvider > , ISunsetPolicyManager , IOptions < ApiExplorerOptions > , IApiVersionDescriptionProvider > activator )
19
+ Func < IEnumerable < IApiVersionMetadataCollationProvider > , ISunsetPolicyManager , IOptions < ApiExplorerOptions > , IApiVersionDescriptionProvider > activator ,
20
+ ISunsetPolicyManager sunsetPolicyManager ,
21
+ IEnumerable < IApiVersionMetadataCollationProvider > providers ,
22
+ IOptions < ApiExplorerOptions > options )
19
23
{
20
- this . serviceProvider = serviceProvider ;
21
24
this . activator = activator ;
25
+ this . sunsetPolicyManager = sunsetPolicyManager ;
26
+ this . providers = providers . ToArray ( ) ;
27
+ this . options = options ;
22
28
}
23
29
24
30
public IApiVersionDescriptionProvider Create ( EndpointDataSource endpointDataSource )
25
31
{
26
- var providers = serviceProvider . GetServices < IApiVersionMetadataCollationProvider > ( ) . ToList ( ) ;
32
+ var collators = new List < IApiVersionMetadataCollationProvider > ( capacity : providers . Length + 1 ) ;
27
33
28
- providers . Insert ( 0 , new EndpointApiVersionMetadataCollationProvider ( endpointDataSource ) ) ;
34
+ collators . Add ( new EndpointApiVersionMetadataCollationProvider ( endpointDataSource ) ) ;
35
+ collators . AddRange ( providers ) ;
29
36
30
- var sunsetPolicyManager = serviceProvider . GetRequiredService < ISunsetPolicyManager > ( ) ;
31
- var options = serviceProvider . GetRequiredService < IOptions < ApiExplorerOptions > > ( ) ;
32
-
33
- return activator ( providers , sunsetPolicyManager , options ) ;
37
+ return activator ( collators , sunsetPolicyManager , options ) ;
34
38
}
35
39
}
0 commit comments