2012-08-30 36 views
0

我想反序列化包含CDATA集合的序列化XML。集合是反序列化CDATA時的只讀異常

XML看起來是這樣的:

<User Index="1"> 
    <Address><![CDATA[My street 1, 1234, My city]]></Address> 
    <Address><![CDATA[My next street 1, 5678, My another city]]></Address> 
</User> 

因爲我希望新的地址添加直接作爲字符串是這樣的:

var user = new User(); 
user.Addresses.Add("My street 1, 1234, My city"); 
user.Addresses.Add("My next street 1, 5678, My another city"); 

我的用戶類看起來像:

​​

序列化這工作正常。但是,反序列化,拋出異常

"Collection is read-only." 

回答

0

當您創建一個傳遞IList作爲參數的新集合時,它會將集合創建爲原始列表的包裝。它不會將其複製到新列表中(請參閱here)。在你的addressNode setter中,你創建一個新的集合作爲你的集合的包裝。您可以將其更改爲新的List,因爲List構造函數確實會創建一個新列表而不是包裝原始列表(請參見here)。

+0

謝謝!就是這樣。 – LadislavM

0

我想你不妨打個電話ToList,而不是ToArray

+0

感謝您的回答,但它與ToList的操作方式與ToArray相同。 – LadislavM