我遇到了问题:XmlSerializer.Deserialize无法正常工作,或者我不明白它是如何工作的。
类pastebin https://pastebin.com/FBvD2q5L
我有一个类和一个xml文档。我希望反序列化能够毫无问题地通过,但是我遇到的问题是CapacityKey类中容量和hardlimit的字段被识别为ushort。
XmlSerializer serializer = new XmlSerializer(typeof(licFile));
StreamReader reader = new StreamReader(filepath);
var license = (licFile)serializer.Deserialize(reader);
reader.Close();
reader.Dispose();
[OverflowException:对于UInt16,该值小得令人无法接受或大得令人无法接受。] System.UInt16.Parse(String s,NumberStyles style,NumberFormatInfo info)
这很奇怪,因为我指定了UInt64的数据类型,我尝试只放了4700000。
private UInt64 capacityField;
private UInt64 hardLimitField;
xml doc的一部分
<capacityKey id="CXC4031004">
<description>EvoC 8000/RNC User Capacity HWAC</description>
<start>2018-02-12</start>
<noStop/>
<capacity>4700000</capacity>
<hardLimit>4700000</hardLimit>
</capacityKey>
如果在文档中键入4700而不是4700000,则反序列化将没有问题。此值包含在ushort的限制中。
license.body.SWLT.fingerprint.capacityKey[0].hardLimit 4700 ushort
但我不需要一个短途旅行。可以做些什么?