2010-04-20 37 views
3

我有一個稱爲座標的結構,它包含在名爲segment的另一個類的列表中。Howto序列化Silverlight中的列表<T>?

public struct Coordinate 
{ 
    public double Latitude { get; set; } 
    public double Longtitude { get; set; } 
    public double Altitude { get; set; } 
    public DateTime Time { get; set; } 
} 

public class Segment 
{ 
    private List<Coordinate> coordinates; 
    ... 
} 

我想序列化使用Silverlight的XmlSerializer的Segment類(在Windows Phone 7上)。我從link text瞭解到XmlSerializer不支持List<T>。序列化可調整大小數組座標的建議方式是什麼?

感謝,于爾根·

回答

0

我認爲每個人都應該設計自己的序列化格式的意見。這些日子似乎是少數觀點。

你永遠不知道什麼串行器變成了一種文件格式,你真的不希望能夠讀取依賴於.NET框架的文件格式。

+0

我同意你不想被框架依賴(所以如果它存在於這個平臺上,就避免像'BinaryFormatter'這樣的東西),但是有很多獨立於平臺的預滾動序列化API,它們不涉及re - 發明輪子。 – 2010-04-20 23:23:38

1

你試過了嗎?哪個位特別是建議沒有列表?

有關信息,只要我將所有工具放在一起(VS2010/Phone 7 sdk等),我計劃看看protobuf-net可以爲Phone 7做些什麼,但XmlSerializer應該是一個固定的默認設置。

+0

通過頁面超過一半的位 「的ArrayList的序列化和泛型列表 XmlSerializer的不能序列化或反序列化如下: * ArrayList的 *數組列表<(Of <(T>的陣列)>)」 – Jurgen 2010-04-21 11:57:57

+0

@Jurgen - 跟它不支持嵌套/參差不齊的列表。你的問題不涉及到嵌套列表。甚至可以簡單地通過在中間添加一個額外的對象來解決這個問題(即,您有一個對象的數組,它封裝了一些東西;這很好)。有關信息,這是一個常見的限制; protobuf網*也*堅持這一點(有幾個例外,它將工作) – 2010-04-21 12:03:21

+0

嗯,是的,我錯過了這一點。我想知道爲什麼序列化不能在Win7 Phone模擬器上工作。將研究這一點。 – Jurgen 2010-04-21 14:08:11

2

我總是比較喜歡DataContractSerializer而不是XmlSerializer。 XmlSerializer在vanilla Silverlight中不可用,但DataContractSerializer是。

它不會有任何問題序列化您顯示的結構。