用于反序列化的XmlSerializer.Deserialize用法不是类字段中定义的类型?

时间:2018-02-19 13:50:03

标签: c# xml-serialization xml-deserialization

我遇到了问题: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

但我不需要一个短途旅行。可以做些什么?

0 个答案:

没有答案