经过大量调试后,我才知道崩溃的确切原因。首先
测试1:
我正在从驱动器加载一个XML文件,将其反序列化为MOTORCLASS并使用MOTORCLASS属性,稍后再次序列化为XML它工作正常。
测试2:
我有一个Datatable,它的所有行都映射到MOTORCLASS属性,现在当序列化为XML时发生崩溃..
查看MOTORCLASS属性时
`public object APPOINTMENT
{
get
{
return this.aPPOINTMENTField;
}
set
{
this.aPPOINTMENTField = value;
}
}`
在运行时,TEST 1将APPOINTMENT设置为 Xmlnode TEST 2将APPOINTMENT指定为日期时间。
我认为如果我将Datetime转换为Xmlnode,它应该解决问题。但不知道如何实现它。我试过了
[System.Xml.Serialization.XmlElementAttribute("APPOINTMENT")]
。
但它仍然是Datetime。任何人都可以在这里说清楚。
测试1:
测试2:
答案 0 :(得分:1)
问题不在于碰巧分配给财产的价值本身的类型;它是XmlSerializer
之前需要知道它可以预期的类型。
如果APPOINTMENT
始终为DateTime
,只需将属性类型更改为DateTime
即可。除了修复xml序列化问题外,这还可以防止错误并提高应用程序的性能。
如果APPOINTMENT
可以是不同的东西,您可以为序列化器提供候选类型:
[XmlElement("AppointmentAsDateTime", Type = typeof(DateTime))]
[XmlElement("AppointmentAsOtherType", Type = typeof(OtherType))]
public object APPOINTMENT { get; set; }
这使序列化程序能够处理APPOINTMENT
为DateTime
或OtherType
的情况。
(相信该解决方案归Marc Gravell所有:How to serialize property of type Object with XmlSerializer)