2008-11-17 62 views
0

我有以下結構:如何在silverlight中將基類正確序列化爲JSON?

class Base 
{ 
} 

class Child : Base 
{ 
} 

當我試圖做到以下幾點:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Base)); 
serializer.WriteObject(stream, data); 

它失敗,出現錯誤消息:

類型 'MyNamespace.Child' 數據合同名稱 「兒童:http://schemas.datacontract.org/2004/07/MyNamespace」 預計不會。將已知靜態的 類型添加到已知的 類型的列表中 - 例如,使用 KnownTypeAttribute屬性或 將它們添加到傳遞給DataContractSerializer的已知類型列表 。

有誰知道如何正確序列化剛子類?

回答

3

如果添加KnownType attribute(從System.Runtime.Serialization)爲子類的基類,那麼它會工作:

[KnownType(typeof(Child))] 
class Base 
{} 

class Child : Base 
{} 

這是必要的,因爲串行不加載你的孩子類型當你設置它來序列化基類(至少這是我的理解)。

+0

你是正確的。與XML序列化工作方式相同。 – 2008-11-18 02:03:25

相關問題