c# - DataContractSerializer serializing List<T> getting error -


i trying serialize list, serializes (i think fine), when deserialize,

sorry amount of code, stuck , have no idea why happening, tried changed struct class , no help.

thanks.

i following error updated

    there error deserializing object of type there error deserializing object of type  `system.collections.generic.list`1[[a.b.c.datavalues, a.v, version=1.0.0.0, culture=neutral, publickeytoken=null]]. unexpected end of file. following elements not closed: time, datavalues, arrayofdatavalues.` 

i serializing updated

     public void serializedatavalue(list<datavalues> values)             {                 datacontractserializer serializer = new datacontractserializer(typeof(list<datavalues>));                  using (memorystream stream = new memorystream())                 {                     using (gzipstream compress = new gzipstream(stream, compressionmode.compress))                     {                         xmldictionarywriter w = xmldictionarywriter.createbinarywriter(compress);                         serializer.writeobject(w, values);                      }                     _serializeddata = stream.toarray();                 }             } 

i deserializing updated

 public list<datavalues> deserializedatavalue() {     if (serializeddata == null || serializeddata.length == 0)     {         return new list<datavalues> ();     }     else     {         datacontractserializer serializer = new datacontractserializer(typeof(list<datavalues>));         using (memorystream stream = new memorystream(serializeddata))         {             using (gzipstream decompress = new gzipstream(stream, compressionmode.decompress))             {                 xmldictionaryreader r = xmldictionaryreader.createbinaryreader(decompress, xmldictionaryreaderquotas.max);                 return serializer.readobject(r, true) list<datavalues>;             }         }     } } 

properties

private byte[] _serializeddata;  [datamember] [browsable(false)] public byte[] serializeddata {     { return _serializeddata; }     set { _serializeddata = value; } } 

helper methods

public static byte[] readfully(stream input) {     byte[] buffer = new byte[16 * 1024];     input.position = 0;     using (memorystream ms = new memorystream())     {         int read;         while ((read = input.read(buffer, 0, buffer.length)) > 0)         {             ms.write(buffer, 0, read);         }         return ms.toarray();     } } 

struct

[datacontract(name = "datavalues", namespace = "a.b.c")] public struct datavalues {     [datamember]     public datetime time { get; set; }     [datamember]     public single value { get; set; }      public datavalues(datetime datetime, single value)     {         time = datetime;         value = value;    } }  

i can sample work removing xmldictionaryreader , instead directly feeding input/output stream datacontractserializer. may defect in xmldictionaryreader large compressed collections i'm not sure.

hope helps:

public void serializedatavalue(list<datavalues> values)             {                 datacontractserializer serializer = new datacontractserializer(typeof(list<datavalues>));                     using (memorystream stream = new memorystream())                 {                     using (gzipstream compress = new gzipstream(stream, compressionmode.compress))                     {                         serializer.writeobject(compress , values);                      }                     _serializeddata = stream.toarray();                 }             }      public list<datavalues> deserializedatavalue()     {         if (serializeddata == null || serializeddata.length == 0)         {             return new list<datavalues> ();         }         else         {             datacontractserializer serializer = new datacontractserializer(typeof(list<datavalues>));             using (memorystream stream = new memorystream(serializeddata))             {                 using (gzipstream decompress = new gzipstream(stream, compressionmode.decompress))                 {                     return serializer.readobject(decompress , true) list<datavalues>;                 }             }         }     } 

Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -