33
44using System . Collections . Generic ;
55using Microsoft . OpenApi . Interfaces ;
6+ using Microsoft . OpenApi . Models . References ;
67using Microsoft . OpenApi . Writers ;
78
89namespace Microsoft . OpenApi . Models
@@ -20,7 +21,7 @@ public class OpenApiDiscriminator : IOpenApiSerializable, IOpenApiExtensible
2021 /// <summary>
2122 /// An object to hold mappings between payload values and schema names or references.
2223 /// </summary>
23- public IDictionary < string , string > ? Mapping { get ; set ; } = new Dictionary < string , string > ( ) ;
24+ public IDictionary < string , OpenApiSchemaReference > ? Mapping { get ; set ; } = new Dictionary < string , OpenApiSchemaReference > ( ) ;
2425
2526 /// <summary>
2627 /// This object MAY be extended with Specification Extensions.
@@ -38,7 +39,7 @@ public OpenApiDiscriminator() { }
3839 public OpenApiDiscriminator ( OpenApiDiscriminator discriminator )
3940 {
4041 PropertyName = discriminator ? . PropertyName ?? PropertyName ;
41- Mapping = discriminator ? . Mapping != null ? new Dictionary < string , string > ( discriminator . Mapping ) : null ;
42+ Mapping = discriminator ? . Mapping != null ? new Dictionary < string , OpenApiSchemaReference > ( discriminator . Mapping ) : null ;
4243 Extensions = discriminator ? . Extensions != null ? new Dictionary < string , IOpenApiExtension > ( discriminator . Extensions ) : null ;
4344 }
4445
@@ -80,7 +81,13 @@ private void SerializeInternal(IOpenApiWriter writer)
8081 writer . WriteProperty ( OpenApiConstants . PropertyName , PropertyName ) ;
8182
8283 // mapping
83- writer . WriteOptionalMap ( OpenApiConstants . Mapping , Mapping , ( w , s ) => w . WriteValue ( s ) ) ;
84+ writer . WriteOptionalMap ( OpenApiConstants . Mapping , Mapping , ( w , s ) =>
85+ {
86+ if ( ! string . IsNullOrEmpty ( s . Reference . ReferenceV3 ) && s . Reference . ReferenceV3 is not null )
87+ {
88+ w . WriteValue ( s . Reference . ReferenceV3 ) ;
89+ }
90+ } ) ;
8491 }
8592
8693 /// <summary>
0 commit comments