0

以前にシリアル化されたクラスが1つあります。そこからxml出力があります。プロジェクトを開くと、xmlを逆シリアル化して、保存されたオブジェクトを取得します。これで、クラスに新しいboolプロパティが追加されました。これは新しいプロパティであるため、古いxmlにはこの属性がありません。私の逆シリアル化は正常に機能しますが、boolプロパティにfalseを割り当てます。XMLに存在しない場合はtrueに設定する必要があります。どうすればこれを達成できますか?私はこのように試しました

public bool? _flag;
[XmlElement("Flag")]
public bool? flag
{
    get
    {
        if (null != _flag)
        {
            return _flag;
        }
        return true;
    }
    set { _flag= value; }
}
4

1 に答える 1

2

デフォルトのコンストラクターを追加して、そこに設定するだけです。次に例を示します。

public MyObject()
{
    Flag = true;
}

編集

コードで何が起こっているのかわかりませんが、これは完全に正常に機能します。

public class MyObject
    {
        public MyObject()
        {
            Flag = true;
        }

        public bool Flag { get; set; }

        public string Name { get; set; }
    }

最初に、そこにboolプロパティがなく、ファイルにシリアル化しました。次に、手順2で、そのboolプロパティとコンストラクターを追加しました。次に、ディスクから逆シリアル化すると、true期待どおりの結果が表示されました。

他に何かが起こっていると思うので、コードを確認してください。ヘルプが必要な場合は、ここにクラス全体を投稿してください。

于 2013-03-13T04:41:15.227 に答える