0

この種の構造を持つドキュメントがあります。

<page name="some-name">
    <header>
        //some content
    </header>
    <section header="value">
        //some content
    </section>
</page>

このドキュメントを逆シリアル化して Page クラスのインスタンスを取得すると、常にリフレクション エラーと InvalidOperationException が発生します。デバッグと多くの試行錯誤により、このエラーの理由は、ノード (XMLElement) とプロパティ (XMLAttribute) の名前が同じであることがわかりました。この例では、名前は「ヘッダー」です。XML 構造は決して変更できないため、それは解決策ではありません。それを機能させる方法はありますか、または逆シリアル化以外で後でプロパティ値を追加する必要がありますか?

クラスは次の形式です。

[XmlType("page")]
public class Page
{
    [XmlAttribute("name")]
    public string Name { get; set }

    [XmlElement("header")]
    public Header Header { get; set }

    [XmlElement("section")]
    public Section Section { get; set }
}

[XmlType("section")]
public class Section
{
    [XmlAttribute("header")]
    public string Header { get; set }
}

[XmlType("header")]
public class Header
{
    //elements and attributes as properties
}
4

2 に答える 2