@@ -90,19 +90,32 @@ public OpenApiComponents(OpenApiComponents? components)
9090 Extensions = components ? . Extensions != null ? new Dictionary < string , IOpenApiExtension > ( components . Extensions ) : null ;
9191 }
9292
93+ /// <summary>
94+ /// Serialize <see cref="OpenApiComponents"/> to Open API v3.2.
95+ /// </summary>
96+ /// <param name="writer"></param>
97+ public virtual void SerializeAsV32 ( IOpenApiWriter writer )
98+ {
99+ SerializeAsV3X ( writer , OpenApiSpecVersion . OpenApi3_2 , ( writer , element ) => element . SerializeAsV32 ( writer ) , ( writer , referenceElement ) => referenceElement . SerializeAsV32 ( writer ) ) ;
100+ }
101+
93102 /// <summary>
94103 /// Serialize <see cref="OpenApiComponents"/> to Open API v3.1.
95104 /// </summary>
96105 /// <param name="writer"></param>
97106 public virtual void SerializeAsV31 ( IOpenApiWriter writer )
107+ {
108+ SerializeAsV3X ( writer , OpenApiSpecVersion . OpenApi3_1 , ( writer , element ) => element . SerializeAsV31 ( writer ) , ( writer , referenceElement ) => referenceElement . SerializeAsV31 ( writer ) ) ;
109+ }
110+ private void SerializeAsV3X ( IOpenApiWriter writer , OpenApiSpecVersion version , Action < IOpenApiWriter , IOpenApiSerializable > callback , Action < IOpenApiWriter , IOpenApiReferenceHolder > action )
98111 {
99112 Utils . CheckArgumentNull ( writer ) ;
100113
101114 // If references have been inlined we don't need the to render the components section
102115 // however if they have cycles, then we will need a component rendered
103116 if ( writer . GetSettings ( ) . InlineLocalReferences )
104117 {
105- RenderComponents ( writer , ( writer , element ) => element . SerializeAsV31 ( writer ) , OpenApiSpecVersion . OpenApi3_1 ) ;
118+ RenderComponents ( writer , callback , version ) ;
106119 return ;
107120 }
108121
@@ -116,16 +129,15 @@ public virtual void SerializeAsV31(IOpenApiWriter writer)
116129 {
117130 if ( component is OpenApiPathItemReference reference )
118131 {
119- reference . SerializeAsV31 ( w ) ;
132+ action ( w , reference ) ;
120133 }
121134 else
122135 {
123- component . SerializeAsV31 ( w ) ;
136+ callback ( w , component ) ;
124137 }
125138 } ) ;
126139
127- SerializeInternal ( writer , OpenApiSpecVersion . OpenApi3_1 , ( writer , element ) => element . SerializeAsV31 ( writer ) ,
128- ( writer , referenceElement ) => referenceElement . SerializeAsV31 ( writer ) ) ;
140+ SerializeInternal ( writer , version , callback , action ) ;
129141 }
130142
131143 /// <summary>
0 commit comments