DataContractSerializer et Dictionnaire<string,object> n'est pas lors de la lecture

Je suis en utilisant DataContractSerializer pour sérialiser un objet qui contient un Dictionary<string,object> membre, qui est marquée par [DataMember()]. L'idée est d'avoir une poche souple d'attributs d'un objet, et je ne sais pas ce que ces attributs pourraient être.

Cela fonctionne très bien quand je suis en train de mettre int, double et string objets dans le dictionnaire, mais quand je mets un List<string> dans il ne parvient pas à désérialiser l'objet avec:

System.InvalidOperationException: Node type Element is not supported in this operation.

La totalité du dictionnaire est sérialisé en XML, et il semble assez raisonnable:

<Attributes xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>name</d2p1:Key>
<d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">Test object</d2p1:Value>
</d2p1:KeyValueOfstringanyType>
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>x</d2p1:Key>
<d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:double">0.5</d2p1:Value>
</d2p1:KeyValueOfstringanyType>
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>y</d2p1:Key>
<d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:double">1.25</d2p1:Value>
</d2p1:KeyValueOfstringanyType>
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>age</d2p1:Key>
<d2p1:Value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:int">4</d2p1:Value>
</d2p1:KeyValueOfstringanyType>
<d2p1:KeyValueOfstringanyType>
<d2p1:Key>list-of-strings</d2p1:Key>
<d2p1:Value>
<d2p1:string>one string</d2p1:string>
<d2p1:string>two string</d2p1:string>
<d2p1:string>last string</d2p1:string>
</d2p1:Value>
</d2p1:KeyValueOfstringanyType>
</Attributes>

Note le list-of-strings à la fin. Il a toutes les valeurs, mais rien n'indiquant que c'est un List<string> ou quoi que ce soit.

Quelle est la bonne façon de gérer cette situation?

OriginalL'auteur Chris Herborth | 2011-10-01