4

DataContract で以下の 2 つのデータ メンバーを使用し、DataContractSerializer を使用すると、Name のみが期待どおりにシリアル化されます。私の問題は、ファイルを逆シリアル化するときです。「名前」は適切に読み取られてロードされますが、「タイムアウト」が存在しないため、デフォルトの「TimeSpan.FromHours(12)」のままになると予想されます。実際には、DataContractSerializer が値を割り当てますが、割り当てる値がないため、タイムスパンのデフォルトの 0 を使用します。この動作の周りに何かありますか?

private string _name;
    [DataMember(Name = "Name")]
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name= value;
        }
    }

    private TimeSpan _timeout = TimeSpan.FromHours(12);
    public TimeSpan Timeout
    {
        get
        {
            return _timeout ;
        }
        set
        {
            _timeout = value;
        }
    }
4

1 に答える 1

5

これがあなたの答えですか

OnDeserialized の使用

[OnDeserialized]
void OnDeserialized(StreamingContext context)
{
    this._timeout = TimeSpan.FromHours(12);
}

ここからDataContractSerializer 使用時のプロパティの初期値設定

于 2012-07-10T16:57:59.867 に答える