@@ -13,8 +13,10 @@ namespace JsonApiDotNetCore.OpenApi;
13
13
14
14
/// <summary>
15
15
/// Adds JsonApiDotNetCore metadata to <see cref="ControllerActionDescriptor" />s if available. This translates to updating response types in
16
- /// <see cref="ProducesResponseTypeAttribute" /> and performing an expansion for secondary and relationship endpoints (eg
17
- /// /article/{id}/{relationshipName} -> /article/{id}/author, /article/{id}/revisions, etc).
16
+ /// <see cref="ProducesResponseTypeAttribute" /> and performing an expansion for secondary and relationship endpoints. For example:
17
+ /// <code><![CDATA[
18
+ /// /article/{id}/{relationshipName} -> /article/{id}/author, /article/{id}/revisions, etc.
19
+ /// ]]></code>
18
20
/// </summary>
19
21
internal sealed class JsonApiActionDescriptorCollectionProvider : IActionDescriptorCollectionProvider
20
22
{
@@ -163,30 +165,16 @@ private static void UpdateBodyParameterDescriptor(ActionDescriptor endpoint, Typ
163
165
164
166
private static ActionDescriptor Clone ( ActionDescriptor descriptor )
165
167
{
166
- var clone = ( ActionDescriptor ) descriptor . MemberwiseClone ( ) ;
167
-
168
- clone . AttributeRouteInfo = ( AttributeRouteInfo ) descriptor . AttributeRouteInfo ! . MemberwiseClone ( ) ;
169
-
170
- clone . FilterDescriptors = new List < FilterDescriptor > ( ) ;
171
-
172
- foreach ( FilterDescriptor filter in descriptor . FilterDescriptors )
173
- {
174
- clone . FilterDescriptors . Add ( Clone ( filter ) ) ;
175
- }
176
-
177
- clone . Parameters = new List < ParameterDescriptor > ( ) ;
178
-
179
- foreach ( ParameterDescriptor parameter in descriptor . Parameters )
180
- {
181
- clone . Parameters . Add ( ( ParameterDescriptor ) parameter . MemberwiseClone ( ) ) ;
182
- }
183
-
168
+ ActionDescriptor clone = descriptor . MemberwiseClone ( ) ;
169
+ clone . AttributeRouteInfo = descriptor . AttributeRouteInfo ! . MemberwiseClone ( ) ;
170
+ clone . FilterDescriptors = descriptor . FilterDescriptors . Select ( Clone ) . ToList ( ) ;
171
+ clone . Parameters = descriptor . Parameters . Select ( parameter => parameter . MemberwiseClone ( ) ) . ToList ( ) ;
184
172
return clone ;
185
173
}
186
174
187
175
private static FilterDescriptor Clone ( FilterDescriptor descriptor )
188
176
{
189
- var clone = ( IFilterMetadata ) descriptor . Filter . MemberwiseClone ( ) ;
177
+ IFilterMetadata clone = descriptor . Filter . MemberwiseClone ( ) ;
190
178
191
179
return new FilterDescriptor ( clone , descriptor . Scope )
192
180
{
0 commit comments