【发布时间】:2021-09-19 18:14:03
【问题描述】:
我有多个具有不同结构的类。我希望我的所有子类ToString 方法都像这样被覆盖
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
这样我就可以为他们得到一个 json 序列化的字符串。
因为我有多个类并且我想要完全相同的东西,所以我想有一个基类,我将覆盖 ToString 方法,它将适用于所有子类,就像这样
public class ResponseBase
{
public override string ToString()
{
return JsonSerializer.Serialize(this);
}
}
并且有这样的子类
public class Response_1: ResponseBase
{
public string Name {get;set;}
}
但是当我尝试这样做时,
Response_1 r = new Response_1();
r.Name = "Test";
var json = r.ToString(); // has empty json object "{}"
所以基类的覆盖 ToString 方法确实被调用,因为我得到空的 json 字符串“{}”,但它在转换为 json 时不考虑子对象属性。
所以基本上this在这一行,不代表当时的子对象而是基础对象
return JsonSerializer.Serialize(this);
所以解决方案不起作用。
有什么方法可以实现吗?要在一个地方为多个类重写 ToString 方法?
【问题讨论】:
标签: c# inheritance this tostring