When interpolating objects into strings (mainly for logging purposes), it needs to be explicitly serialized otherwise what you get is:
.
The .NET Core json serializer method you used is generic, like this:
public static string Serialize (TValue value,
System.Text.Json.JsonSerializerOptions options = default);
By design, it only considers the properties in TValue
when it serializes, and since you called it from your abstract class, with this
, which of course will then be of the abstract class type, it only considers properties in the abstract class.
Basically your call is inferred to be
return JsonSerializer.Serialize(this);
Fortunately, it is easy to fix, simply switch to calling the non-generic method:
return JsonSerializer.Serialize(this, GetType());
Now it uses runtime information about which type you're actually calling it about instead of the abstract class, and should correctly serialize properties from your descendant type.