2012-12-04 55 views
2

我使用.NET 4.5 Windows應用商店的應用程序的股票JSON串行器 -爲什麼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不可序列化,因爲數據成員'Date'在其類型層次結構中是重複的。

我明白它做什麼。但是我的問題是不是如何它做但爲什麼呢?

從邏輯上說,它應該與多態性等編程功能兼容。 爲什麼這個班被忽視呢?

+2

有些事情不清楚,你的意思是AEx是從A派生出來的嗎? –

+0

是的..對不起,錯過了。謝謝 –

回答

12

你的課程基本上包含兩個同名的屬性。因此,如果您嘗試反序列化某些包含該屬性名稱的JSON,則無法知道要設置哪個屬性。

同樣,當序列化有型,你有哪些需要使用相同的屬性名被序列化兩個值的目標 - 你會期望的JSON的樣子?

基本上,具有兩個同名屬性的類型與普通名稱/值對格式的序列化不兼容。 (更高級的序列化機制可以指定哪個屬性與哪個聲明類相關聯,但JSON不會這樣做。)

相關問題