Bop*_*Bop 2 c# oop polymorphism windows-8 .net-4.5
我在.NET 4.5 Windows商店应用程序中使用stock JSON serialiser -
System.Runtime.Serialization.Json.DataContractJsonSerializer
Run Code Online (Sandbox Code Playgroud)
我有一个由API提供商提供的类说
class A { public DateTime Date {get;set} }
Run Code Online (Sandbox Code Playgroud)
我想隐藏Date字段(注意 - 新关键字):
class AEx : A { public new string Date {get;set} }
Run Code Online (Sandbox Code Playgroud)
但我得到例外:
类型'AEx'不能与DataContractJsonSerializer一起序列化,因为数据成员'Date'在其类型层次结构中是重复的.
我理解它的作用..但我的问题不是它怎么做但为什么呢?
从逻辑上讲,它应该与多态等编程功能兼容.为什么这堂课被忽略了呢?
Jon*_*eet 12
您的类基本上包含两个具有相同名称的属性.因此,如果您尝试反序列化包含该属性名称的某些JSON,则无法知道要设置哪个属性.
同样,当序列化该类型的对象时,您有两个值需要使用相同的属性名称进行序列化 - 您希望 JSON看起来像什么?
从根本上说,具有两个同名属性的类型与普通名称/值对格式的序列化不兼容.(一种更高级的序列化机制,可以指定哪个属性与哪个声明类相关联,但JSON不这样做.)