Est-il possible que DataContractSerializer
désérialise à tort un object si les champs ne sont pas dans l’ordre “correct” (peu importe ce que cela signifie)?
Les classes que j’essaie de sérialiser / désérialiser ne possèdent pas d’atsortingbuts de commande placés sur des champs / propriétés. Pourtant, l’un de mes champs est toujours désérialisé en tant que null
même s’il possède une valeur non nulle (il contient en fait une liste de chaînes).
Lorsque j’ai déplacé deux éléments XML dans un fichier sérialisé pour correspondre à l’ordre d’un autre exemple XML (pour lequel la désérialisation fonctionnait sans problème), tout a commencé à fonctionner.
Cela n’a aucun sens pour moi mais peut-être que quelqu’un le sait mieux. 😉
Pour être éligible pour une sérialisation correcte / sérialisation par le DataContractSerializer
, tous les éléments suivants doivent être vrais.
SerializableAtsortingbute
ou DataContractAtsortingbute
; DataMemberAtsortingbute
; IExtensibleDataObject
; Order
du DataMemberAtsortingbute
. Donc, l’ordre de la déclaration est important. Si les membres ne sont pas dans l’ordre alphabétique, ils sont ignorés. Recherchez cette réponse sur StackOverflow pour un exemple , cela s’applique peut-être à votre cas.