@@ -47,7 +47,7 @@ public static byte[] SerializeToBytes<T>(
47
47
SerializationFormatting formatting = SerializationFormatting . None
48
48
)
49
49
{
50
- if ( serializer is SystemTextJsonSerializer stjSerializer )
50
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
51
51
{
52
52
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations.
53
53
return JsonSerializer . SerializeToUtf8Bytes ( data , stjSerializer . GetJsonSerializerOptions ( formatting ) ) ;
@@ -92,7 +92,7 @@ public static byte[] SerializeToBytes(
92
92
SerializationFormatting formatting = SerializationFormatting . None
93
93
)
94
94
{
95
- if ( serializer is SystemTextJsonSerializer stjSerializer )
95
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
96
96
{
97
97
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations.
98
98
return JsonSerializer . SerializeToUtf8Bytes ( data , type , stjSerializer . GetJsonSerializerOptions ( formatting ) ) ;
@@ -135,7 +135,7 @@ public static string SerializeToString<T>(
135
135
SerializationFormatting formatting = SerializationFormatting . None
136
136
)
137
137
{
138
- if ( serializer is SystemTextJsonSerializer stjSerializer )
138
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
139
139
{
140
140
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
141
141
// serialize straight into string.
@@ -183,7 +183,7 @@ public static string SerializeToString(
183
183
SerializationFormatting formatting = SerializationFormatting . None
184
184
)
185
185
{
186
- if ( serializer is SystemTextJsonSerializer stjSerializer )
186
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
187
187
{
188
188
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
189
189
// serialize straight into string.
@@ -234,7 +234,7 @@ public static void Serialize<T>(
234
234
MemoryStreamFactory ? memoryStreamFactory ,
235
235
SerializationFormatting formatting = SerializationFormatting . None )
236
236
{
237
- if ( serializer is SystemTextJsonSerializer stjSerializer )
237
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
238
238
{
239
239
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
240
240
// serialize straight into the writer.
@@ -294,7 +294,7 @@ public static void Serialize(
294
294
MemoryStreamFactory ? memoryStreamFactory ,
295
295
SerializationFormatting formatting = SerializationFormatting . None )
296
296
{
297
- if ( serializer is SystemTextJsonSerializer stjSerializer )
297
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
298
298
{
299
299
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
300
300
// serialize straight into the writer.
@@ -332,7 +332,7 @@ public static void Serialize(
332
332
string input ,
333
333
MemoryStreamFactory ? memoryStreamFactory = null )
334
334
{
335
- if ( serializer is SystemTextJsonSerializer stjSerializer )
335
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
336
336
{
337
337
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
338
338
// deserialize straight from the span.
@@ -362,7 +362,7 @@ public static void Serialize(
362
362
Type type ,
363
363
MemoryStreamFactory ? memoryStreamFactory = null )
364
364
{
365
- if ( serializer is SystemTextJsonSerializer stjSerializer )
365
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
366
366
{
367
367
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
368
368
// deserialize straight from the span.
@@ -391,7 +391,7 @@ public static void Serialize(
391
391
ReadOnlySpan < byte > span ,
392
392
MemoryStreamFactory ? memoryStreamFactory = null )
393
393
{
394
- if ( serializer is SystemTextJsonSerializer stjSerializer )
394
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
395
395
{
396
396
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
397
397
// deserialize straight from the span.
@@ -421,7 +421,7 @@ public static void Serialize(
421
421
Type type ,
422
422
MemoryStreamFactory ? memoryStreamFactory = null )
423
423
{
424
- if ( serializer is SystemTextJsonSerializer stjSerializer )
424
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
425
425
{
426
426
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
427
427
// deserialize straight from the span.
@@ -450,7 +450,7 @@ public static void Serialize(
450
450
ReadOnlySpan < char > span ,
451
451
MemoryStreamFactory ? memoryStreamFactory = null )
452
452
{
453
- if ( serializer is SystemTextJsonSerializer stjSerializer )
453
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
454
454
{
455
455
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
456
456
// deserialize straight from the span.
@@ -480,7 +480,7 @@ public static void Serialize(
480
480
Type type ,
481
481
MemoryStreamFactory ? memoryStreamFactory = null )
482
482
{
483
- if ( serializer is SystemTextJsonSerializer stjSerializer )
483
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
484
484
{
485
485
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
486
486
// deserialize straight from the span.
@@ -509,7 +509,7 @@ public static void Serialize(
509
509
ref Utf8JsonReader reader ,
510
510
MemoryStreamFactory ? memoryStreamFactory = null )
511
511
{
512
- if ( serializer is SystemTextJsonSerializer stjSerializer )
512
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
513
513
{
514
514
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
515
515
// deserialize straight from the reader.
@@ -546,7 +546,7 @@ public static void Serialize(
546
546
Type type ,
547
547
MemoryStreamFactory ? memoryStreamFactory = null )
548
548
{
549
- if ( serializer is SystemTextJsonSerializer stjSerializer )
549
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
550
550
{
551
551
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
552
552
// deserialize straight from the reader.
@@ -582,7 +582,7 @@ public static void Serialize(
582
582
JsonNode node ,
583
583
MemoryStreamFactory ? memoryStreamFactory = null )
584
584
{
585
- if ( serializer is SystemTextJsonSerializer stjSerializer )
585
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
586
586
{
587
587
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
588
588
// deserialize straight from the node.
@@ -617,7 +617,7 @@ public static void Serialize(
617
617
Type type ,
618
618
MemoryStreamFactory ? memoryStreamFactory = null )
619
619
{
620
- if ( serializer is SystemTextJsonSerializer stjSerializer )
620
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
621
621
{
622
622
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
623
623
// deserialize straight from the node.
@@ -651,7 +651,7 @@ public static void Serialize(
651
651
JsonElement node ,
652
652
MemoryStreamFactory ? memoryStreamFactory = null )
653
653
{
654
- if ( serializer is SystemTextJsonSerializer stjSerializer )
654
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( typeof ( T ) ) )
655
655
{
656
656
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
657
657
// deserialize straight from the node.
@@ -686,7 +686,7 @@ public static void Serialize(
686
686
Type type ,
687
687
MemoryStreamFactory ? memoryStreamFactory = null )
688
688
{
689
- if ( serializer is SystemTextJsonSerializer stjSerializer )
689
+ if ( serializer is SystemTextJsonSerializer stjSerializer && stjSerializer . SupportsFastPath ( type ) )
690
690
{
691
691
// When the serializer derives from `SystemTextJsonSerializer` we can avoid unnecessary allocations and
692
692
// deserialize straight from the node.
0 commit comments