3

我注意到,当使用派生自使用显式 DataContract 属性的基类的 JSON.NET 序列化/反序列化 POCO 类时,派生类上的任何 POCO 属性都将被忽略。

例如,在此示例中,“地址”未序列化/反序列化:

[DataContract]
public class MyBaseClass
{
    [DataMember(Name = "SomeName")]
    public string Name { get; set; }
}

public class MyDerivedClass : MyBaseClass
{
    public string Address { get; set; }
}

这是故意的吗?

FWIW,似乎DataContractSerializer(至少是XML)在这里做了“正确的事情”并序列化/反序列化“地址”。

谢谢!

亨里克

4

1 回答 1

2

在 JSON.NET 中,至少从 v4.5.6 开始,它会检测DataContract基类的 并假设 opt-in serialization。由于Address没有用DataMember属性装饰它不会被序列化。

这是 James Newton-King 的设计,没有计划更改。

于 2013-10-07T21:37:14.123 回答