@@ -10,26 +10,30 @@ namespace Microsoft.AspNetCore.Builder;
1010
1111internal sealed class ApiVersionDescriptionProviderFactory : IApiVersionDescriptionProviderFactory
1212{
13- private readonly IServiceProvider serviceProvider ;
13+ private readonly ISunsetPolicyManager sunsetPolicyManager ;
14+ private readonly IApiVersionMetadataCollationProvider [ ] providers ;
15+ private readonly IOptions < ApiExplorerOptions > options ;
1416 private readonly Func < IEnumerable < IApiVersionMetadataCollationProvider > , ISunsetPolicyManager , IOptions < ApiExplorerOptions > , IApiVersionDescriptionProvider > activator ;
1517
1618 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 )
1923 {
20- this . serviceProvider = serviceProvider ;
2124 this . activator = activator ;
25+ this . sunsetPolicyManager = sunsetPolicyManager ;
26+ this . providers = providers . ToArray ( ) ;
27+ this . options = options ;
2228 }
2329
2430 public IApiVersionDescriptionProvider Create ( EndpointDataSource endpointDataSource )
2531 {
26- var providers = serviceProvider . GetServices < IApiVersionMetadataCollationProvider > ( ) . ToList ( ) ;
32+ var collators = new List < IApiVersionMetadataCollationProvider > ( capacity : providers . Length + 1 ) ;
2733
28- providers . Insert ( 0 , new EndpointApiVersionMetadataCollationProvider ( endpointDataSource ) ) ;
34+ collators . Add ( new EndpointApiVersionMetadataCollationProvider ( endpointDataSource ) ) ;
35+ collators . AddRange ( providers ) ;
2936
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 ) ;
3438 }
3539}
0 commit comments