#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;}
}