我写了一个解释我问题的小例子。
我有主要课程:MainClass
public class MainClass
{
public string ID
{
get;
set;
}
}
我有叶班:LeafClass
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,我只有基本属性。知道如何让它发挥作用吗?
答案 0 :(得分:1)
我发现了如何解决我的问题。
我必须在每个属性的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
}
答案 1 :(得分:0)
试试这个:
[Serializable]
public class MainClass
...
[Serializable]
public class LeafClass : MainClass
...
...编辑
您正在传入一个从未设置过ID的MainClass实例,但您正在为该值分配ID。 ID为null。
public LeafClass(MainClass oMainClass)
{
this.ID = oMainClass.ID; // <-- oMainClass.ID is null because you never set it in oMainClass
this.ID2 = "my 2nd ID";
}
试试这个:
MainClass MC = new MainClass();
MC.ID = "ABC";
LeafClass[] LF = { new LeafClass(MC), new LeafClass(MC) };