@@ -23,11 +23,6 @@ public static class OpenApiModelFactory
2323    { 
2424        private  static readonly  HttpClient  _httpClient  =  new ( ) ; 
2525
26-         static OpenApiModelFactory ( ) 
27-         { 
28-             OpenApiReaderRegistry . RegisterReader ( OpenApiConstants . Json ,  new  OpenApiJsonReader ( ) ) ; 
29-         } 
30- 
3126        /// <summary> 
3227        /// Loads the input stream and parses it into an Open API document. 
3328        /// </summary> 
@@ -45,6 +40,7 @@ public static ReadResult Load(MemoryStream stream,
4540            if  ( stream  is  null )  throw  new  ArgumentNullException ( nameof ( stream ) ) ; 
4641#endif
4742            settings  ??=  new  OpenApiReaderSettings ( ) ; 
43+             settings . Readers . TryAdd ( OpenApiConstants . Json ,  new  OpenApiJsonReader ( ) ) ; 
4844
4945            // Get the format of the stream if not provided 
5046            format  ??=  InspectStreamFormat ( stream ) ; 
@@ -73,7 +69,7 @@ public static ReadResult Load(MemoryStream stream,
7369        public  static T  Load < T > ( MemoryStream  input ,  OpenApiSpecVersion  version ,  string  format ,  OpenApiDocument  openApiDocument ,  out  OpenApiDiagnostic  diagnostic ,  OpenApiReaderSettings  settings  =  null )  where  T  :  IOpenApiElement 
7470        { 
7571            format  ??=  InspectStreamFormat ( input ) ; 
76-             return  OpenApiReaderRegistry . GetReader ( format ) . ReadFragment < T > ( input ,  version ,  openApiDocument ,  out  diagnostic ,  settings ) ; 
72+             return  settings . Readers [ format ] . ReadFragment < T > ( input ,  version ,  openApiDocument ,  out  diagnostic ,  settings ) ; 
7773        } 
7874
7975        /// <summary> 
@@ -122,6 +118,7 @@ public static async Task<ReadResult> LoadAsync(Stream input, string format = nul
122118            if  ( input  is  null )  throw  new  ArgumentNullException ( nameof ( input ) ) ; 
123119#endif
124120            settings  ??=  new  OpenApiReaderSettings ( ) ; 
121+             settings . Readers . TryAdd ( OpenApiConstants . Json ,  new  OpenApiJsonReader ( ) ) ; 
125122
126123            Stream  preparedStream ; 
127124            if  ( format  is  null ) 
@@ -204,6 +201,7 @@ public static ReadResult Parse(string input,
204201#endif
205202            format  ??=  InspectInputFormat ( input ) ; 
206203            settings  ??=  new  OpenApiReaderSettings ( ) ; 
204+             settings . Readers . TryAdd ( OpenApiConstants . Json ,  new  OpenApiJsonReader ( ) ) ; 
207205
208206            // Copy string into MemoryStream 
209207            using  var  stream  =  new  MemoryStream ( Encoding . UTF8 . GetBytes ( input ) ) ; 
@@ -235,6 +233,7 @@ public static T Parse<T>(string input,
235233#endif
236234            format  ??=  InspectInputFormat ( input ) ; 
237235            settings  ??=  new  OpenApiReaderSettings ( ) ; 
236+             settings . Readers . TryAdd ( OpenApiConstants . Json ,  new  OpenApiJsonReader ( ) ) ; 
238237            using  var  stream  =  new  MemoryStream ( Encoding . UTF8 . GetBytes ( input ) ) ; 
239238            return  Load < T > ( stream ,  version ,  format ,  openApiDocument ,  out  diagnostic ,  settings ) ; 
240239        } 
@@ -243,7 +242,7 @@ public static T Parse<T>(string input,
243242
244243        private  static async  Task < ReadResult >  InternalLoadAsync ( Stream  input ,  string  format ,  OpenApiReaderSettings  settings ,  CancellationToken  cancellationToken  =  default ) 
245244        { 
246-             var  reader  =  OpenApiReaderRegistry . GetReader ( format ) ; 
245+             var  reader  =  settings . Readers [ format ] ; 
247246            var  readResult  =  await  reader . ReadAsync ( input ,  settings ,  cancellationToken ) . ConfigureAwait ( false ) ; 
248247
249248            if  ( settings ? . LoadExternalRefs  ??  DefaultReaderSettings . LoadExternalRefs ) 
@@ -283,7 +282,7 @@ private static ReadResult InternalLoad(MemoryStream input, string format, OpenAp
283282                throw  new  ArgumentException ( $ "Cannot parse the stream: { nameof ( input ) }  is empty or contains no elements.") ; 
284283            } 
285284
286-             var  reader  =  OpenApiReaderRegistry . GetReader ( format ) ; 
285+             var  reader  =  settings . Readers [ format ] ; 
287286            var  readResult  =  reader . Read ( input ,  settings ) ; 
288287            return  readResult ; 
289288        } 
0 commit comments