Используемый вами метод сериализатора. NET Core json является generi c, например:
public static string Serialize<TValue> (TValue value,
System.Text.Json.JsonSerializerOptions options = default);
По дизайну он учитывает свойства в TValue
только при сериализации, и поскольку вы вызвали его из своего абстрактного класса с помощью this
, который, конечно, будет иметь тип абстрактного класса, он рассматривает только свойства в абстрактном классе.
В основном ваш вызов считается
return JsonSerializer.Serialize<BaseModel>(this);
К счастью, это легко исправить, просто переключитесь на вызов метода non-generi c:
return JsonSerializer.Serialize(this, GetType());
Теперь он использует информацию времени выполнения о том, какой тип вы на самом деле вызывая его вместо абстрактного класса, и он должен правильно сериализовать свойства из вашего потомка.