4

このエラーメッセージはまったく意味がないので、誰かがここで正しい方向に向けてくれることを願っています. 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." 

上記のように、'None' は明らかに有効な値です。問題をさらにイライラさせるのは、このエラーが特定の XML ファイルに対してのみ表示されることです。同じ方法でシリアル化され、値が「なし」の他のファイルは、問題なく逆シリアル化されます。作業ファイルとエラーを何度もスローするファイルを比較しましたが、XML 構造はまったく同じです。

以下は、シリアル化された XML のスニペットです。

<Key>0</Key>
<OptionType>None</OptionType>
<TypeId>0</TypeId>

もっと深刻な問題があるのではないかと思いますが、CLR は有用なエラーではなく嘘のエラーをスローしています。実際の問題が何であるかを知るために誰かが私を正しい方向に向けることができますか、またはこれが有効なエラーである場合は、その理由と何が間違っているのかを説明してもらえますか? また、デシリアライゼーションは C# ライブラリで行われます。

ありがとう

4

2 に答える 2