如何在Silverlight中正确地将基类序列化为JSON?

时间:2008-11-17 16:58:37

标签: silverlight json serialization silverlight-2.0

我有以下结构:

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。

有谁知道如何正确序列化子类?

1 个答案:

答案 0 :(得分:3)

如果将KnownType attribute(来自System.Runtime.Serialization)添加到子类的基类,那么它将起作用:

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

class Child : Base
{}

这是必需的,因为序列化程序在您将其设置为序列化基类时不会加载您的子类型(至少这是我的理解)。