4

使用 DataContract 中的以下两个数据成员,然后使用 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 回答