@@ -165,50 +165,25 @@ internal void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion versio
165165
166166            writer . WriteEndObject ( ) ; 
167167        } 
168- 
169-         /// <inheritdoc/> 
170-         public  void  SerializeAsV2 ( IOpenApiWriter  writer ) 
168+         /// <summary> 
169+         /// Write the "in" property for V2 serialization. 
170+         /// </summary> 
171+         /// <param name="writer">Writer to use for the serialization</param> 
172+         internal  virtual  void  WriteInPropertyForV2 ( IOpenApiWriter  writer ) 
171173        { 
172-             Utils . CheckArgumentNull ( writer ) ; 
173- 
174-             writer . WriteStartObject ( ) ; 
175- 
176-             // in 
177-             if  ( this  is  OpenApiFormDataParameter ) 
178-             { 
179-                 writer . WriteProperty ( OpenApiConstants . In ,  "formData" ) ; 
180-             } 
181-             else  if  ( this  is  OpenApiBodyParameter ) 
182-             { 
183-                 writer . WriteProperty ( OpenApiConstants . In ,  "body" ) ; 
184-             } 
185-             else 
186-             { 
187-                 writer . WriteProperty ( OpenApiConstants . In ,  In ? . GetDisplayName ( ) ) ; 
188-             } 
189- 
190-             // name 
191-             writer . WriteProperty ( OpenApiConstants . Name ,  Name ) ; 
192- 
193-             // description 
194-             writer . WriteProperty ( OpenApiConstants . Description ,  Description ) ; 
195- 
196-             // required 
197-             writer . WriteProperty ( OpenApiConstants . Required ,  Required ,  false ) ; 
198- 
199-             // deprecated 
200-             writer . WriteProperty ( OpenApiConstants . Deprecated ,  Deprecated ,  false ) ; 
201- 
202-             var  extensionsClone  =  Extensions  is  not null  ?  new  Dictionary < string ,  IOpenApiExtension > ( Extensions )  :  null ; 
174+             writer . WriteProperty ( OpenApiConstants . In ,  In ? . GetDisplayName ( ) ) ; 
175+         } 
203176
204-             // schema 
205-             if  ( this  is  OpenApiBodyParameter ) 
206-             { 
207-                 writer . WriteOptionalObject ( OpenApiConstants . Schema ,  Schema ,  ( w ,  s )  =>  s . SerializeAsV2 ( w ) ) ; 
208-             } 
177+         /// <summary> 
178+         /// Write the request body schema for V2 serialization. 
179+         /// </summary> 
180+         /// <param name="writer">Writer to use for the serialization</param> 
181+         /// <param name="extensionsClone">Extensions clone</param> 
182+         internal  virtual  void  WriteRequestBodySchemaForV2 ( IOpenApiWriter  writer ,  Dictionary < string ,  IOpenApiExtension > ?  extensionsClone ) 
183+         { 
209184            // In V2 parameter's type can't be a reference to a custom object schema or can't be of type object 
210185            // So in that case map the type as string. 
211-             else   if  ( Schema  is  OpenApiSchemaReference  {  UnresolvedReference :  true  }  ||  ( Schema ? . Type  &  JsonSchemaType . Object )  ==  JsonSchemaType . Object ) 
186+             if  ( Schema  is  OpenApiSchemaReference  {  UnresolvedReference :  true  }  ||  ( Schema ? . Type  &  JsonSchemaType . Object )  ==  JsonSchemaType . Object ) 
212187            { 
213188                writer . WriteProperty ( OpenApiConstants . Type ,  "string" ) ; 
214189            } 
@@ -270,7 +245,34 @@ public void SerializeAsV2(IOpenApiWriter writer)
270245                    } 
271246                } 
272247            } 
248+         } 
249+ 
250+         /// <inheritdoc/> 
251+         public  void  SerializeAsV2 ( IOpenApiWriter  writer ) 
252+         { 
253+             Utils . CheckArgumentNull ( writer ) ; 
254+ 
255+             writer . WriteStartObject ( ) ; 
256+ 
257+             // in 
258+             WriteInPropertyForV2 ( writer ) ; 
273259
260+             // name 
261+             writer . WriteProperty ( OpenApiConstants . Name ,  Name ) ; 
262+ 
263+             // description 
264+             writer . WriteProperty ( OpenApiConstants . Description ,  Description ) ; 
265+ 
266+             // required 
267+             writer . WriteProperty ( OpenApiConstants . Required ,  Required ,  false ) ; 
268+ 
269+             // deprecated 
270+             writer . WriteProperty ( OpenApiConstants . Deprecated ,  Deprecated ,  false ) ; 
271+ 
272+             var  extensionsClone  =  Extensions  is  not null  ?  new  Dictionary < string ,  IOpenApiExtension > ( Extensions )  :  null ; 
273+ 
274+             // schema 
275+             WriteRequestBodySchemaForV2 ( writer ,  extensionsClone ) ; 
274276            //examples 
275277            if  ( Examples  !=  null  &&  Examples . Any ( ) ) 
276278            { 
@@ -315,12 +317,24 @@ public IOpenApiParameter CreateShallowCopy()
315317    /// </summary> 
316318    internal  class  OpenApiBodyParameter  :  OpenApiParameter 
317319    { 
320+         internal  override  void  WriteRequestBodySchemaForV2 ( IOpenApiWriter  writer ,  Dictionary < string ,  IOpenApiExtension > ?  extensionsClone ) 
321+         { 
322+             writer . WriteOptionalObject ( OpenApiConstants . Schema ,  Schema ,  ( w ,  s )  =>  s . SerializeAsV2 ( w ) ) ; 
323+         } 
324+         internal  override  void  WriteInPropertyForV2 ( IOpenApiWriter  writer ) 
325+         { 
326+             writer . WriteProperty ( OpenApiConstants . In ,  "body" ) ; 
327+         } 
318328    } 
319329
320330    /// <summary> 
321331    /// Form parameter class to propagate information needed for <see cref="OpenApiParameter.SerializeAsV2"/> 
322332    /// </summary> 
323333    internal  class  OpenApiFormDataParameter  :  OpenApiParameter 
324334    { 
335+         internal  override  void  WriteInPropertyForV2 ( IOpenApiWriter  writer ) 
336+         { 
337+             writer . WriteProperty ( OpenApiConstants . In ,  "formData" ) ; 
338+         } 
325339    } 
326340} 
0 commit comments