@@ -30,16 +30,10 @@ public IEnumerable<string> ExtractParameters(
3030 allParameters . AddRange ( GetExtractor < RouteParameterExtractor > ( ) . Extract ( operationModel , operation , settings ) ) ;
3131
3232 // Query parameters (with dynamic querystring support)
33- var queryParameters = operationModel . Parameters
34- . Where ( p => p . Kind == OpenApiParameterKind . Query )
35- . ToList ( ) ;
36-
37- allParameters . AddRange ( ExtractQueryParameters (
38- operationModel ,
39- settings ,
40- dynamicQuerystringParameterType ,
41- queryParameters ,
42- out dynamicQuerystringParameters ) ) ;
33+ var queryExtractor = GetExtractor < QueryParameterExtractor > ( ) ;
34+ queryExtractor . DynamicQuerystringParameterType = dynamicQuerystringParameterType ;
35+ allParameters . AddRange ( queryExtractor . Extract ( operationModel , operation , settings ) ) ;
36+ dynamicQuerystringParameters = queryExtractor . DynamicQuerystringCode ;
4337
4438 // Body parameters (including binary body)
4539 allParameters . AddRange ( GetExtractor < BodyParameterExtractor > ( ) . Extract ( operationModel , operation , settings ) ) ;
@@ -63,55 +57,17 @@ public IEnumerable<string> ExtractParameters(
6357 return allParameters ;
6458 }
6559
66- private IParameterTypeExtractor GetExtractor < T > ( ) where T : IParameterTypeExtractor
60+ private T GetExtractor < T > ( ) where T : IParameterTypeExtractor
6761 {
6862 return extractors . OfType < T > ( ) . First ( ) ;
6963 }
7064
71- private static List < string > ExtractQueryParameters (
72- CSharpOperationModel operationModel ,
73- RefitGeneratorSettings settings ,
74- string dynamicQuerystringParameterType ,
75- List < CSharpParameterModel > queryParameters ,
76- out string ? dynamicQuerystringParameters )
77- {
78- List < string > ? parameters = null ;
79- var dynamicQuerystringParametersCodeBuilder = string . Empty ;
80-
81- if ( settings . UseDynamicQuerystringParameters && queryParameters . Count >= 2 )
82- {
83- var allNullable = queryParameters . All ( p =>
84- ParameterShared . GetQueryParameterType ( p , settings ) . EndsWith ( "?" ) ) ;
85-
86- var dynamicQuerystringCode = DynamicQuerystringParameterBuilder . Build (
87- queryParameters ,
88- dynamicQuerystringParameterType ,
89- settings ) ;
90-
91- if ( ! string . IsNullOrWhiteSpace ( dynamicQuerystringCode ) )
92- {
93- dynamicQuerystringParametersCodeBuilder = dynamicQuerystringCode ;
94- }
95-
96- var dynamicQuerystringParameter = $ "[Query] { dynamicQuerystringParameterType } ";
97- if ( allNullable )
98- dynamicQuerystringParameter += "?" ;
99- dynamicQuerystringParameter += " queryParams" ;
100- parameters = [ dynamicQuerystringParameter ] ;
101- }
102-
103- dynamicQuerystringParameters = dynamicQuerystringParametersCodeBuilder ;
104-
105- parameters ??= QueryParameterExtractor . ExtractSimple ( operationModel , settings ) . ToList ( ) ;
106-
107- return parameters ;
108- }
109-
11065 private static IReadOnlyList < IParameterTypeExtractor > GetDefaultExtractors ( )
11166 {
11267 return new IParameterTypeExtractor [ ]
11368 {
11469 new RouteParameterExtractor ( ) ,
70+ new QueryParameterExtractor ( ) ,
11571 new BodyParameterExtractor ( ) ,
11672 new HeaderParameterExtractor ( ) ,
11773 new FormParameterExtractor ( ) ,
0 commit comments