11using System ;
2+ using System . IO ;
23using System . Threading . Tasks ;
34
45namespace Open . Serialization
56{
67 public class Serializer < T > : SerializerBase < T >
78 {
8- private readonly Func < T , string > _serializer ;
99 private readonly Func < string , T > _deserializer ;
10- private readonly Func < T , ValueTask < string > > _serializerAsync ;
11- private readonly Func < string , ValueTask < T > > _deserializerAsync ;
10+ private readonly Func < T , string > _serializer ;
11+ private readonly Func < Stream , ValueTask < T > > _deserializerAsync ;
12+ private readonly Func < Stream , T , ValueTask > _serializerAsync ;
1213
1314 public Serializer (
1415 Func < string , T > deserializer ,
1516 Func < T , string > serializer = null ,
16- Func < string , ValueTask < T > > deserializerAsync = null ,
17- Func < T , ValueTask < string > > serializerAsync = null )
17+ Func < Stream , ValueTask < T > > deserializerAsync = null ,
18+ Func < Stream , T , ValueTask > serializerAsync = null )
1819 {
1920 // It's supported to instantiate a deserializer without a serializer.
2021 _deserializer = deserializer ?? throw new ArgumentNullException ( nameof ( deserializer ) ) ;
@@ -24,10 +25,10 @@ public Serializer(
2425 }
2526
2627 public override T Deserialize ( string value ) => _deserializer ( value ) ;
27- public override ValueTask < T > DeserializeAsync ( string value ) => _deserializerAsync ( value ) ;
28+ public override ValueTask < T > DeserializeAsync ( Stream stream ) => _deserializerAsync ( stream ) ;
2829
2930 public override string Serialize ( T item ) => _serializer ( item ) ;
30- public override ValueTask < string > SerializeAsync ( T item ) => _serializerAsync ( item ) ;
31+ public override ValueTask SerializeAsync ( Stream stream , T item ) => _serializerAsync ( stream , item ) ;
3132
3233 }
3334}
0 commit comments