2016-09-12 1 views
0

J'ai une méthode qui enregistre une instance de ma classe personnalisée dans un fichier. Une fois, j'ai remarqué que mon application ne démarre pas, car ce fichier est rempli avec des octets de valeur 0 (caractères nuls). Cela ne s'est jamais produit auparavant, cela semblait fonctionner correctement. Est-ce que quelqu'un voit quelque chose d'étrange avec ce code? Quelque chose qui peut provoquer le sérialiseur ou le flux de mémoire pour retourner un tableau de valeurs zéro? Ou devrais-je soupçonner que c'est le travail d'une autre application?XmlSerializer et MemoryStream peuvent renvoyer un tableau de 0 octets de valeur?

private readonly XmlSerializer _serializer = new XmlSerializer(typeof(MySettings)); 

    public void Save(MySettings config) 
    { 
     using (var stream = new MemoryStream()) 
     { 
      _serializer.Serialize(stream, config); 
      byte[] binaryConfig = stream.ToArray(); 
      File.WriteAllBytes(_configFilePath, binaryConfig); 
     } 
    } 

Répondre

0

Ne serait-il pas plus simple d'utiliser quelque chose comme ça?

XmlSerializer x = new XmlSerializer(typeof(MySettings)); 
using (FileStream stream = new FileStream(_configFilePath, FileMode.Create, FileAccess.Write)) 
    { 
     x.Serialize(stream, config); 
     stream.Close(); 
    } 

Le fichier XML ne doit pas contenir de 0 octets ou nul caractères, comme objet est traduit à XML texte pendant la sérialisation. Vous pouvez simplement ouvrir le fichier XML en utilisant un éditeur de texte pour voir le contenu du fichier.