我希望有人能在这里指出我正确的方向,因为这个错误消息完全没有意义。我在 VB.NET 库中声明了一个枚举值,如下所示。
<Serializable()> Public Enum OptionDataType
<Xml.Serialization.XmlEnum("0")> None = 0
<Xml.Serialization.XmlEnum("1")> Option1 = 1
<Xml.Serialization.XmlEnum("2")> Option2 = 2
<Xml.Serialization.XmlEnum("3")> Option3 = 3
<Xml.Serialization.XmlEnum("4")> Option4 = 4
<Xml.Serialization.XmlEnum("5")> Option5 = 5
Option6 = 6
End Enum
当我尝试反序列化此对象的 XML 表示时,我收到一条错误消息:
"Instance validation error: 'None' is not a valid value for OptionDataType."
正如您在上面看到的,“无”显然是一个有效值。更令人沮丧的是,这个错误只会出现在某些 XML 文件中。以相同方式序列化并具有“无”值的其他文件将反序列化而不会出现任何问题。我已经将工作文件与无数次抛出错误的文件进行了比较,并且 XML 结构完全相同。
下面是序列化 XML 的片段。
<Key>0</Key>
<OptionType>None</OptionType>
<TypeId>0</TypeId>
我怀疑存在更深层次的问题,但 CLR 抛出了一个谎言错误而不是有用的东西。有人可以指出我找出实际问题的正确方向吗,或者如果这是一个有效的错误,请向我解释为什么以及出了什么问题?此外,值得一提的是,反序列化发生在 C# 库中。
谢谢