【发布时间】:2013-10-07 17:49:04
【问题描述】:
我注意到,当使用从使用显式 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 的)在这里做了“正确的事情”并序列化/反序列化“地址”。
谢谢!
亨里克
【问题讨论】:
-
在我的测试中,如果
DataContractSerializer没有用[DataContract]装饰,它根本不会序列化子类;相反,它会引发异常。这似乎与documentation for theDataContractAttribute一致,它声明它不是从基类继承的。 -
@BrianRogers 您的意思是基类需要该属性吗?无论如何,已经有一段时间了,所以也许它改变了。请参阅this documentation 了解继承如何影响数据契约。
标签: json.net