我正在使用版本7.0.1 Beta3,尝试对一个具有抽象类数组属性的复杂POCO进行序列化/反序列化。这些数组可能包含从抽象类派生出来的类的实例。
在序列化时,一切似乎都很正常。下面的Json片段显示类型信息已正确设置。
Json片段:
"Items":
[
{
"$type": "IVXB_TS, ...",
"inclusive": true,
"value": "20091231"
}
]
但反序列化过程中,出现以下错误:
无法创建类型为QTY的实例。该类型是接口或抽象类,无法实例化。
类层次结构如下:
[System.Xml.Serialization.XmlIncludeAttribute(typeof(IVXB_TS))]
public abstract partial class ANY : object, System.ComponentModel.INotifyPropertyChanged
{
}
[System.Xml.Serialization.XmlIncludeAttribute(typeof(IVXB_TS))]
public abstract partial class QTY : ANY
{
}
[System.Xml.Serialization.XmlIncludeAttribute(typeof(IVXB_TS))]
public partial class TS : QTY
{
}
public partial class IVXB_TS : TS
{
}
Items属性:
[System.Xml.Serialization.XmlElementAttribute("high", typeof(IVXB_TS))]
[System.Xml.Serialization.XmlElementAttribute("low", typeof(IVXB_TS))]
public QTY[] Items
Json片段中的类型信息似乎没有被使用。这是反序列化配置问题吗?
TypeNameHandling
设置为除None
以外的任何值,而不设置适当的SerializationBinder
会导致安全漏洞:https://dev59.com/LVkS5IYBdhLWcg3wp4bO - pooya13