@@ -47,25 +47,15 @@ public DefaultSerializer()
4747
4848 public Stream Serialize ( object instance )
4949 {
50- Guard . AgainstNull ( instance , nameof ( instance ) ) ;
51-
52- var messageType = instance . GetType ( ) ;
53- var serializer = GetSerializer ( messageType ) ;
54-
55- var xml = new StringBuilder ( ) ;
56-
57- using var writer = XmlWriter . Create ( xml , _xmlWriterSettings ) ;
58-
59- serializer . Serialize ( writer , instance , _namespaces ) ;
60-
61- writer . Flush ( ) ;
62-
63- var data = Encoding . UTF8 . GetBytes ( xml . ToString ( ) ) ;
64-
65- return new MemoryStream ( data , 0 , data . Length , false , true ) ;
50+ return SerializeAsync ( instance , true ) . GetAwaiter ( ) . GetResult ( ) ;
6651 }
6752
6853 public async Task < Stream > SerializeAsync ( object instance )
54+ {
55+ return await SerializeAsync ( instance , false ) . ConfigureAwait ( false ) ;
56+ }
57+
58+ private async Task < Stream > SerializeAsync ( object instance , bool sync )
6959 {
7060 Guard . AgainstNull ( instance , nameof ( instance ) ) ;
7161
@@ -78,7 +68,14 @@ public async Task<Stream> SerializeAsync(object instance)
7868
7969 serializer . Serialize ( writer , instance , _namespaces ) ;
8070
81- await writer . FlushAsync ( ) . ConfigureAwait ( false ) ;
71+ if ( sync )
72+ {
73+ writer . Flush ( ) ;
74+ }
75+ else
76+ {
77+ await writer . FlushAsync ( ) . ConfigureAwait ( false ) ;
78+ }
8279
8380 var data = Encoding . UTF8 . GetBytes ( xml . ToString ( ) ) ;
8481
@@ -87,25 +84,15 @@ public async Task<Stream> SerializeAsync(object instance)
8784
8885 public object Deserialize ( Type type , Stream stream )
8986 {
90- Guard . AgainstNull ( type , nameof ( type ) ) ;
91- Guard . AgainstNull ( stream , nameof ( stream ) ) ;
92-
93- using var copy = new MemoryStream ( ) ;
94-
95- var position = stream . Position ;
96-
97- stream . Position = 0 ;
98- stream . CopyTo ( copy ) ;
99-
100- stream . Position = position ;
101- copy . Position = 0 ;
102-
103- using var reader = XmlDictionaryReader . CreateTextReader ( copy , Encoding . UTF8 , _xmlDictionaryReaderQuotas , null ) ;
104-
105- return GetSerializer ( type ) . Deserialize ( reader ) ;
87+ return DeserializeAsync ( type , stream , true ) . GetAwaiter ( ) . GetResult ( ) ;
10688 }
10789
10890 public async Task < object > DeserializeAsync ( Type type , Stream stream )
91+ {
92+ return await DeserializeAsync ( type , stream , false ) . ConfigureAwait ( false ) ;
93+ }
94+
95+ private async Task < object > DeserializeAsync ( Type type , Stream stream , bool sync )
10996 {
11097 Guard . AgainstNull ( type , nameof ( type ) ) ;
11198 Guard . AgainstNull ( stream , nameof ( stream ) ) ;
@@ -115,7 +102,14 @@ public async Task<object> DeserializeAsync(Type type, Stream stream)
115102
116103 stream . Position = 0 ;
117104
118- await stream . CopyToAsync ( copy ) . ConfigureAwait ( false ) ;
105+ if ( sync )
106+ {
107+ stream . CopyTo ( copy ) ;
108+ }
109+ else
110+ {
111+ await stream . CopyToAsync ( copy ) . ConfigureAwait ( false ) ;
112+ }
119113
120114 stream . Position = position ;
121115 copy . Position = 0 ;
0 commit comments