JsonIgnore дочернее свойство от родителя

#c# #json #.net-core #swagger

Вопрос:

Я пытаюсь игнорировать при сериализации в Json родительского свойства дочернего класса, но это не работает.

У меня есть такой объект, как этот:

 public class DependantQuestionCreateRequest : QuestionCreateRequest
{
    [JsonIgnore]
    public new DependantQuestionCreateRequest DependantQuestion;

}
 

Как вы можете видеть, я скрываю родительское свойство DependantQuestion только для добавления атрибута JsonIgnore в дочернее свойство.

Это связано с тем, что оба класса равны, разница лишь в том, что родитель может содержать ребенка внутри как свойство, но ребенок не может.

Я не хочу дублировать все реквизиты из одной модели в другую, просто чтобы избежать сериализации на swagger свойства DependantQuestion.

Однако этот код не работает, и моя развязность отображает его так

 "dependantQuestion" : "string"
 

Это означает, на мой взгляд, что атрибут JsonIgnore фактически игнорируется.

Кто-нибудь знает способ скрыть это родительское свойство у ребенка?

Комментарии:

1. Попробуйте использовать virutal/переопределение и переопределить свойство в дочернем элементе вместо того, чтобы скрывать его с помощью ключевого слова new

2. Да, с виртуальным/переопределением это работает

3. Спасибо вам, ребята. Это работает :).

Ответ №1:

Решение, предоставленное @gunr2171 и @Fabjan в комментариях, отвечает на мой вопрос.

 public class BaseClass
{
    public virtual string MyProperty {get;set;} 
}

public class ChildClass : BaseClass
{
    [JsonIgnore]
    public override string MyProperty {get;set;}
}