2012-07-11 4 views
1
 private string DeSerialize(string studata) 
    { 
     dcs= new DataContractSerializer(typeof(string)); 
     try 
     { 
      using (var q = new StringReader(studata)) 
      { 
       using (XmlReader reader = XmlReader.Create(sr)) 
       { 
        var k = dcs.ReadObject(reader); 
        return k.ToString(); 
       } 
      } 
     } 
     catch 
     {} 
     return string.Empty; 
    } 

avec la méthode ci-dessus a obtenu l'erreur d'exécution « Erreur dans la ligne 1 la position 41. élément Expecting « string » de namespace « http://schemas.microsoft.com/2003/10/Serialization/'.. Espace de nommage étudiant' Element 'rencontréErreur lors de la désérialisation en utilisant DataContactSerializer avec C#

Répondre

6

Lorsque vous sérialisez quelque chose, vous sérialisez un objet dans une représentation telle que XML, JSON, etc. Si la représentation n'est pas binaire, le résultat de la sérialisation peut être stocké dans une chaîne

Votre code essaie de prendre une chaîne et de la désérialiser en une chaîne, ce qui n'a pas de sens

La ligne

dcs= new DataContractSerializer(typeof(string)); 

indique que le type de l'objet sérialisé vous désérialisation est une chaîne de type. Ce n'est probablement pas ce que vous vouliez dire.

Remplacez typeof(string) par typeof(WhateverTypeIPreviouslySerialized).

De même, le type de retour de DeSerialize est string. Cela devrait également être WhateverTypeIPreviouslySerialized.

Rien à voir avec la question fondamentale, je voudrais signaler que la prise vide

catch 
    {} 

est une mauvaise pratique. Il masque les exceptions qui sont lancées et doivent être traitées. Si vous souhaitez renvoyer une valeur spécifique lorsque la sérialisation échoue, placez cette valeur dans l'instruction catch.

+0

@pst: Merci, ajouté votre edit de nouveau dans :-) –

+0

Merci Eric J .... – GANI

Questions connexes