Estoy usando DataContractSerializer
para serializar un objeto que contiene un miembro Dictionary<string,object>
, que está marcado con [DataMember()]
. La idea es tener una bolsa flexible de atributos de objeto, y no sé cuáles podrían ser esos atributos.DataContractSerializer y Dictionary <string, object> falla al leer
Esto funciona muy bien cuando estoy poniendo int
, double
y string
objetos en el diccionario, pero cuando pongo un List<string>
en ella no puede deserializar el objeto con:
System.InvalidOperationException: Node type Element is not supported in this operation.
El diccionario entero es serializado a XML, y parece bastante razonable:
<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>
Nota del list-of-strings
al final allí. Tiene todos los valores pero nada que indique que es List<string>
o lo que sea.
¿Cuál es la forma correcta de manejar esta situación?