3

我在 .NET 4.5 Windows 商店应用程序中使用库存 JSON 序列化程序 -

System.Runtime.Serialization.Json.DataContractJsonSerializer

我有一个由 API 提供者提供的类说

class A { public DateTime Date {get;set} }

我想通过这样做来隐藏日期字段(注意 -关键字):

class AEx : A { public new string Date {get;set} }  

但我得到了例外:

类型“AEx”不能使用 DataContractJsonSerializer 序列化,因为数据成员“日期”在其类型层次结构中重复。

我明白它的作用.. 然而我的问题不是它是怎么做的,而是为什么?

从逻辑上讲,它应该与多态等编程特性兼容。为什么这个类被忽略了?

4

1 回答 1

13

您的类基本上包含两个同名的属性。因此,如果您尝试反序列化一些包含该属性名称的 JSON,则无法知道要设置哪个属性。

同样,在序列化该类型的对象时,您有两个值需要使用相同的属性名称进行序列化 - 您希望JSON 看起来像什么?

从根本上说,具有两个同名属性的类型与普通名称/值对格式的序列化不兼容。(一种更高级的序列化机制,可以指定哪个属性与哪个声明类相关联,但 JSON 不这样做。)

于 2012-12-04T14:32:01.453 回答