I have multiple classes with all different structure. I wanted all my child classes ToString method to be overridden like this
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
So that I get a json serialized string for them.
Since I had multiple classes and I wanted exactly same thing, so I thought to have a base class where I would override the ToString method and it will work for all the sub classes, like this
public class ResponseBase
{
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
}
And have child class like this
public class Response_1: ResponseBase
{
public string Name {get;set;}
}
But when I try to do this,
Response_1 r = new Response_1();
r.Name = "Test";
var json = r.ToString(); // has empty json object "{}"
So the base class' overridden ToString method does get called because I get empty json string "{}" but it does not consider child object property while converting to json.
So basically this in this line, does not represent the child object of that time but the base object
return JsonSerializer.Serialize(this);
So the solution doesn't work.
Is there any way to achieve this? To have a ToString method overridden at one place for multiple classes?