Tôi đang sử dụng DataContractSerializer
để tuần tự hóa đối tượng có chứa thành viên Dictionary<string,object>
, được đánh dấu bằng [DataMember()]
. Ý tưởng là để có một túi linh hoạt của các thuộc tính đối tượng, và tôi không biết những gì các thuộc tính có thể được.DataContractSerializer và Dictionary <string, object> không thành công khi đọc
này hoạt động tuyệt vời khi tôi đang đưa int
, double
và string
đối tượng vào từ điển, nhưng khi tôi đặt một List<string>
trong nó không deserialize đối tượng với:
System.InvalidOperationException: Node type Element is not supported in this operation.
Toàn bộ từ điển là serialized để XML và có vẻ khá hợp lý:
<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>
Lưu ý rằng list-of-strings
ở cuối đó. Nó có tất cả các giá trị nhưng không có gì chỉ ra rằng đó là một số List<string>
hoặc bất kỳ thứ gì.
Cách xử lý đúng tình huống này là gì?