c# Переименовать производное свойство при сериализации - PullRequest
4 голосов
/ 29 апреля 2020

У меня есть Базовый класс, со списком в качестве свойства. У меня есть несколько классов, полученных из этого, и я хочу, чтобы эти свойства с другим именем при сериализации ...

Украшение 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; };
}

1 Ответ

2 голосов
/ 29 апреля 2020

Переопределить свойство в производном классе с другим json именем свойства.

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 ключевое слово используется для изменения метода, свойства , индексатора или объявления события и позволяет переопределять его в производном классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...