2015-12-21 1 views
0

Ceci est la continuation de How to set [DataMember] on all class memberserreur de sérialisation DataContract

Je dois sérialiser une classe avec des dictionnaires et d'autres membres.

Je chonse la sérialisation datacontext que le Se

public SimpleDataGridSample() 
    { 
     if (false) 
     { 

     MyClass theclass = new MyClass(); 

     var serializer = new DataContractSerializer(typeof(MyClass)); 

     using (Stream fileStream = File.Open("aaa.bin", FileMode.Create)) 
     { 
      XmlDictionaryWriter binaryDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(fileStream); 
      serializer.WriteObject(binaryDictionaryWriter, theclass); 
      binaryDictionaryWriter.Flush(); 
     } 
     } 
     else 
     { 
     MyClass theclass; 
     var serializer = new DataContractSerializer(typeof(MyClass)); 

     using (Stream fileStream = File.Open("aaa.bin", FileMode.Open)) 
     { 
      XmlDictionaryReaderQuotas xq = new XmlDictionaryReaderQuotas(); 
      XmlDictionaryReader binaryDictionarReader = XmlDictionaryReader.CreateBinaryReader(fileStream, xq); 
      theclass = (MyClass)serializer.ReadObject(binaryDictionarReader); 

     } 
     } 

    } 
    } 

et qui a fonctionné.

Mais c'était juste un programme de test. Lors de l'application de ma classe qui est plus compliqué je reçois cette erreur:

{"Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index"} 

ne peut pas comprendre ce que l'indice parle.

La classe principale est composée de membres serveral (également des dictionnaires et des listes observables) et d'autres sous-classes. Chaque classe est marquée [DataContract(IsReference = true)] et chaque membre est marqué [DataContext]

Thanx

Répondre

0

OK qui était IMPOSSIBLE pour les autres utilisateurs à aswer. Au début, je ne comprenais pas où était le problème parce que je n'avais jamais utilisé de sérialisation DataContract auparavant et que je ne connaissais pas bien le sujet. Mais ça marche! Ce qui m'a mis sur la bonne voie était le bon vieux intellisense. C'est la variable après avoir été créée et elle contient l'exception. Merci les mêmes

enter image description here