C# Newtonsoft json转换器-无法序列化重写类的所有属性
我写了一个小例子来解释我的问题 我有主课:C# Newtonsoft json转换器-无法序列化重写类的所有属性,c#,json,json.net,C#,Json,Json.net,我写了一个小例子来解释我的问题 我有主课:MainClass public class MainClass { public string ID { get; set; } } public class LeafClass : MainClass { public string ID2 { get; set; } #region Constructor public
MainClass
public class MainClass
{
public string ID
{
get;
set;
}
}
public class LeafClass : MainClass
{
public string ID2
{
get;
set;
}
#region Constructor
public LeafClass(MainClass oMainClass)
{
this.ID = oMainClass.ID;
this.ID2 = "my 2nd ID";
}
#endregion
}
我有叶类:leakclass
public class MainClass
{
public string ID
{
get;
set;
}
}
public class LeafClass : MainClass
{
public string ID2
{
get;
set;
}
#region Constructor
public LeafClass(MainClass oMainClass)
{
this.ID = oMainClass.ID;
this.ID2 = "my 2nd ID";
}
#endregion
}
在我看来:
MainClass MC = new MainClass();
LeafClass[] LF = {new LeafClass(MC), new LeafClass(MC)};
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
serializer.Converters.Add(new Newtonsoft.Json.Converters.KeyValuePairConverter());
string JsonData = JsonConvert.SerializeObject(LF, serializer.Converters.ToArray());
我的Json中没有ID2,只有基本属性。你知道如何让它工作吗?试试这个:
[Serializable]
public class MainClass
...
[Serializable]
public class LeafClass : MainClass
...
编辑
您正在传入一个从未设置ID的MainClass实例,但您正在为该值分配ID。ID为空
public LeafClass(MainClass oMainClass)
{
this.ID = oMainClass.ID; // <-- oMainClass.ID is null because you never set it in oMainClass
this.ID2 = "my 2nd ID";
}
我发现了如何解决我的问题 我必须在每个属性的LeafClass
[JsonObject(MemberSerialization.OptIn)]
和[JsonProperty]
上添加这个装饰器
[JsonObject(MemberSerialization.OptIn)]
public class LeafClass : MainClass
{
[JsonProperty]
public string ID2
{
get;
set;
}
#region Constructor
public LeafClass(MainClass oMainClass)
{
this.ID = oMainClass.ID;
this.ID2 = "my 2nd ID";
}
#endregion
}
什么是
Leaf
?请提供一个。等等。。。LeafClass是如何访问这个.ID的?我忘记重写了…不过,什么是新的Leaf()?