2012-02-16 59 views
1

我有兩個類,其中具體類Model<T>隱藏基類「Items」屬性。在使用Json.NET序列化期間試圖隱藏基類成員

class Model 
{ 
    List<ListItem> Items {get;set;} 
} 

class Model<T> : Model 
{ 
    new List<ListItem<T>> Items {get;set;} 
} 

在與Json.NET序列化的Model<T>的情況下,我得到的錯誤:

Newtonsoft.Json.JsonSerializationException : A member with the name ' Items ' already exists on ' Model<T> '. Use the JsonPropertyAttribute to specify another name.

我明白爲什麼我收到此錯誤,但是,我不想更改的屬性名字在具體類;我想能夠告訴序列化程序忽略基類屬性。

我嘗試使用ShouldSerialize{PropertyName}()約定XmlSerializer支持,並Json.NET claims to support too然而,這似乎不爲我的方案工作。

+0

是'Model '唯一將被序列化的類型,或者您可能想序列化'Model'對象嗎? – 2012-02-16 01:12:54

+0

@ M.Babcock我應該澄清一下,'Model'也可以序列化......否則使用'[JsonIgnore]'標記'Model.Items'可以直接進行# – 2012-02-16 01:15:19

+0

您可以在基礎中創建'Items'虛擬類並使用'override'而不是用'new'隱藏?我知道這不是你要求的,但是如果你能控制這兩種類型的話;爲什麼不以「正確」的方式去做呢? – 2012-02-16 01:18:45

回答

0

感謝rsbarro指出這是在Json.NET(v4.0.6.0)的更高版本中修復的。我已升級並確認現在正確的屬性已被序列化。