我有几个派生自基类的类。基类属性具有[DataMember]属性,但派生类属性没有它。当我在子类对象上使用JsonConvert.SerializeObject()时,我只看到基类中的属性被序列化,除非我将[DataMember]添加到派生类的属性中。如何通过忽略[DataMember]属性使SerializeObject()序列化派生类的所有属性,包括在基类中定义的属性?我想避免将[DataMember]添加到派生类的所有属性。
答案 0 :(得分:-1)
如果没有发布任何实际代码,很难指出问题的根源。也许您可以删除任何de /序列化属性,例如[DataMember()]
或[JsonProperty()]
,并再试一次,因为
public abstract class Base
{
public abstract string BaseProp { get; }
}
public class MyBase : Base
{
public override string BaseProp { get { return "propA"; } }
public string MyBaseProp { get; set; }
}
public class My : MyBase
{
public string MyProp { get; set; }
}
然后序列化给定的类实例
var myBase = new MyBase { MyBaseProp = "prop1" };
Console.WriteLine(JsonConvert.SerializeObject(myBase));
var my = new My { MyBaseProp = "prop1", MyProp = "prop2" };
Console.WriteLine(JsonConvert.SerializeObject(my));
为您提供以下输出
{"BaseProp":"propA","MyBaseProp":"prop1"}
{"MyProp":"prop2","BaseProp":"propA","MyBaseProp":"prop1"}