HyperJsonConverter class.
Inheritance: System.Web.Script.Serialization.JavaScriptConverter
Ejemplo n.º 1
0
 /// <summary>
 /// Asynchronously deserializes an object of the specified type.
 /// </summary>
 /// <param name="type">The type of the object to deserialize.</param>
 /// <param name="readStream">The <see cref="T:System.IO.Stream" /> to read.</param>
 /// <param name="content">The <see cref="T:System.Net.Http.HttpContent" />, if available. It may be null.</param>
 /// <param name="formatterLogger">The <see cref="T:System.Net.Http.Formatting.IFormatterLogger" /> to log events to.</param>
 /// <returns>
 /// A <see cref="T:System.Threading.Tasks.Task" /> whose result will be an object of the given type.
 /// </returns>
 public override async Task<object> ReadFromStreamAsync(Type type, Stream readStream, System.Net.Http.HttpContent content, IFormatterLogger formatterLogger)
 {
     var encoding = new UTF8Encoding(false, true);
     var serialiser = new JavaScriptSerializer();
     var jsonConverter = new HyperJsonConverter(new[] { type });
     serialiser.RegisterConverters(new[] { jsonConverter });
     using (var streamReader = new StreamReader(readStream, encoding))
     {
         var data = await streamReader.ReadToEndAsync();
         return serialiser.Deserialize(data, type);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Asynchronously writes an object of the specified type.
 /// </summary>
 /// <param name="type">The type of the object to write.</param>
 /// <param name="value">The object value to write.  It may be null.</param>
 /// <param name="writeStream">The <see cref="T:System.IO.Stream" /> to which to write.</param>
 /// <param name="content">The <see cref="T:System.Net.Http.HttpContent" /> if available. It may be null.</param>
 /// <param name="transportContext">The <see cref="T:System.Net.TransportContext" /> if available. It may be null.</param>
 /// <returns>
 /// A <see cref="T:System.Threading.Tasks.Task" /> that will perform the write.
 /// </returns>
 public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, System.Net.Http.HttpContent content, TransportContext transportContext)
 {
     var task = Task.Factory.StartNew(
         () =>
             {
                 var encoding = new UTF8Encoding(false, true);
                 var serialiser = new JavaScriptSerializer();
                 var jsonConverter = new HyperJsonConverter(new[] { type });
                 serialiser.RegisterConverters(new[] { jsonConverter });
                 using (var streamWriter = new StreamWriter(writeStream, encoding, 512, true))
                 {
                     var data = serialiser.Serialize(value);
                     streamWriter.Write(data);
                     streamWriter.Flush();
                 }
             });
     return task;
 }