C# 调用serialize方法时xml serialize崩溃
经过多次调试,我终于知道了坠机的确切原因。首先 测试1: 我正在从驱动器加载一个XML文件,根据MOTORCLASS对其进行反序列化,并使用MOTORCLASS属性,然后再次序列化为XML,效果很好 测试2: 我有一个Datatable,它的所有行都映射到MOTORCLASS属性,现在序列化为XML时会发生崩溃 在查看MOTORCLASS属性时C# 调用serialize方法时xml serialize崩溃,c#,xml,serialization,xml-deserialization,C#,Xml,Serialization,Xml Deserialization,经过多次调试,我终于知道了坠机的确切原因。首先 测试1: 我正在从驱动器加载一个XML文件,根据MOTORCLASS对其进行反序列化,并使用MOTORCLASS属性,然后再次序列化为XML,效果很好 测试2: 我有一个Datatable,它的所有行都映射到MOTORCLASS属性,现在序列化为XML时会发生崩溃 在查看MOTORCLASS属性时 `public object APPOINTMENT { get { retur
`public object APPOINTMENT
{
get
{
return this.aPPOINTMENTField;
}
set
{
this.aPPOINTMENTField = value;
}
}`
在运行时,测试1将约会设置为Xmlnode
测试2将约会分配为日期时间
我认为,如果我将Datetime转换为Xmlnode,应该可以解决这个问题。但不确定如何实现这一目标。我试过了
[System.Xml.Serialization.xmlementAttribute(“约会”)]
但它仍然是过时的。有人能在这里说明一下吗
测试1:
测试2:
问题不在于碰巧分配给属性的值本身的类型;是
XmlSerializer
需要事先知道它可以预期的类型
如果约会
应该始终是日期时间
,只需将属性类型更改为日期时间
。除了修复xml序列化问题外,这还可以防止错误并提高应用程序的性能
如果约会可以是不同的内容,则可以向序列化程序提供类型候选项:
[XmlElement("AppointmentAsDateTime", Type = typeof(DateTime))]
[XmlElement("AppointmentAsOtherType", Type = typeof(OtherType))]
public object APPOINTMENT { get; set; }
这使得序列化程序能够处理约会
是日期时间
或其他类型
的情况
(这一解决方案归功于Marc Gravell:)