首页 文章

使用DataContract序列化从基类派生的POCO类?

提问于
浏览
3

我注意到,在使用JSON.NET序列化/反序列化POCO类时,该类派生自使用显式DataContract属性的基类,因此忽略派生类上的任何POCO属性 .

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

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

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

这是故意的吗?

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

谢谢!

亨里克

1 回答

  • 2

    在JSON.NET中,至少从v4.5.6开始,它会检测基类的 DataContractassumes opt-in serialization . 由于 Address 未使用 DataMember 属性进行修饰,因此不会对其进行序列化 .

    这是根据James Newton-King的设计而没有计划的改变 .

相关问题