@@ -13,8 +13,10 @@ namespace JsonApiDotNetCore.OpenApi;
1313
1414/// <summary>
1515/// 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>
1820/// </summary>
1921internal sealed class JsonApiActionDescriptorCollectionProvider : IActionDescriptorCollectionProvider
2022{
@@ -163,30 +165,16 @@ private static void UpdateBodyParameterDescriptor(ActionDescriptor endpoint, Typ
163165
164166 private static ActionDescriptor Clone ( ActionDescriptor descriptor )
165167 {
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 ( ) ;
184172 return clone ;
185173 }
186174
187175 private static FilterDescriptor Clone ( FilterDescriptor descriptor )
188176 {
189- var clone = ( IFilterMetadata ) descriptor . Filter . MemberwiseClone ( ) ;
177+ IFilterMetadata clone = descriptor . Filter . MemberwiseClone ( ) ;
190178
191179 return new FilterDescriptor ( clone , descriptor . Scope )
192180 {
0 commit comments