C# 如何将派生类序列化为基类?

C# 如何将派生类序列化为基类?,c#,json.net,C#,Json.net,我想序列化对象并将其传递给参数类型为对象父级的方法 例如,我有这样的课程 public class Base { public string TypeName => GetType().Name; public string Data => JsonConvert.SerializeObject(this); } public class Derived : Base { public string Name { get; set; } public

我想序列化对象并将其传递给参数类型为对象父级的方法

例如,我有这样的课程

public class Base
{
    public string TypeName => GetType().Name;
    public string Data => JsonConvert.SerializeObject(this);
}

public class Derived : Base
{
    public string Name { get; set; }
    public int data1 { get; set; }
    public int data2 { get; set; }
}

public class Derived2 : Base
{
    ...
}

....
我写的代码如下:

var obj = new Derived { Name = "John", data1 = 2000, data2 = 1500 };
Send(obj);
而Send(…)方法是

public void Send(Base info)
{
    // Do Something with "info".
}
当我实例化变量obj时,由于基类中的“数据”,程序陷入无限递归


如何更改代码?

无限递归是由数据属性引起的,该属性是序列化的-这会导致该属性的序列化,循环开始

最好的解决方案是简单地将属性更改为方法,这样就不会序列化,更好地达到目的。如果您对属性死心塌地—您可以尝试标记该属性,这将导致在序列化过程中忽略该属性