0

XMLSerializer を介してシリアル化および逆シリアル化するために使用されるクラスがあります。ExportSteps は、カスタム シリアル化のために IXmlSerializer を実装する別のクラスです。

私の問題は、exportSteps を読み取った後にプロパティを読み取ったり設定したりしていないことです。IsNew と Test2 を Steps の上に移動すると、正常に動作します。それは有効な解決策ではないと思いますが、2 つのカスタムのシリアル化されたクラスが必要な場合はどうすればよいでしょうか?

public class PublishOptions
{


    [XmlElement( "test" )]
    public bool Test { get; set; }

    [XmlElement( "exportSteps" )]
    public ExportSteps Steps { get; set; } <-- implements IXmlSerializable

    [XmlElement( "isNew" )]
    public bool IsNew { get; set; }

    [XmlElement( "test2" )]
    public bool Test2{ get; set; }}
}

var test = serializer.Deserialize(stream) as PublishOptions;

XML (例):

<publishingOptions>
  <test>true</test>
  <exportSteps>     
    <option>foo</option>
    <option>bar</option>
  </exportSteps>
  <isNew>true</isNew>
  <test2>true</test2>
</publishingOptions>
4

1 に答える 1

0

I found the error, it was in the ReadXml method. The reader was exiting the custom reader in the middle of an element. This caused anything after the custom serializer to fail.

于 2013-02-27T00:13:34.997 に答える