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时,由于基类中的“数据”,程序陷入无限递归
如何更改代码?无限递归是由数据属性引起的,该属性是序列化的-这会导致该属性的序列化,循环开始 最好的解决方案是简单地将属性更改为方法,这样就不会序列化,更好地达到目的。如果您对属性死心塌地—您可以尝试标记该属性,这将导致在序列化过程中忽略该属性