我正在将Json Obejct反序列化为win 7上的.net VS2015中的一个类。
public class1
{
[JsonProperty(TypeNameHandling = TypeNameHandling.Objects)]
public Class1 data1;
public Class2 data2;
}
public abstract Class1
{
some functions
}
public subClass1 : Class1
{
public string myData1 { get; set; }
public string myData2 { get; set; }
}
在我的反序列化代码中:
var mo = MyObject as JObject;
ParentMyClass = mo.ToObject<MyClass>();
我知道抽象类不能实例化。因此,subClass1 (它是Class1的一种实现)被序列化。但是,反序列化后,subClass1为null。
我做错什么了吗?
更新:因为类的代码太复杂,我只是简化了逻辑。
发布于 2018-09-29 06:52:36
当您调用mo.ToObject<Class1>();
时,Newtonsoft.Json库将尝试创建一个实例。问题是你不能实例化一个抽象。您可以通过在代码中的某处调用var x = new Class1();
来亲自查看这一点。这会给你带来错误。
也就是说,您可以做的一件事是创建另一个继承抽象类的类。
public class NonAbstract : Class1 {}
这样,您将拥有一个可以实例化的类。然后你就可以这样做了。
mo.ToObject<NonAbstract >();
https://stackoverflow.com/questions/52563400
复制相似问题