簡體   English   中英

c# 序列化時重命名派生屬性

[英]c# Rename a derived property while serializing

我有一個 Base Class,有一個 List 作為屬性。 我有多個從該類派生的類,我希望在序列化時擁有具有不同名稱的這些屬性......

如果未在派生 Object 中指定該屬性,則 Json.Net 裝飾不起作用如果我指定它,我會收到建議“如果打算隱藏,請使用新關鍵字。”,如果我這樣做,我可能會輸物業的基本手續?

public class Translation
{
    [JsonProperty(PropertyName = "name")]
    public string Name { get; set; };

    [JsonProperty(PropertyName = "translatedCaption")]
    public string TranslatedCaption { get; set; };  

    public List<Translation> Children { get; set; };

    public Translation(string name,string translatedCaption)
    {
        Name=name;
        TranslatedCaption=translatedCaption;
        Children = new List<Translation>();
    }

    public void Add(Translation translation)
    {           
        ...
    }
}
public class Translation_Model : Translation
{
    [JsonProperty(PropertyName = "tables")] 
    public List<Translation> Children { get; set; };
}

使用不同的 json 屬性名稱覆蓋派生 class 中的屬性。

public class Translation
{
    ...
    public virtual List<Translation> Children { get; set; }
    ...
}

public class Translation_Model : Translation
{
    ... 
    [JsonProperty(PropertyName = "tables")]
    public override List<Translation> Children { get; set; }
    ...
}

來自 MSDN:

virtual關鍵字用於修改方法、屬性、索引器或事件聲明,並允許在派生的 class 中覆蓋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM