DataContractSerializer中缺少数据成员的缺省值

时间:2012-07-10 16:08:09

标签: c# .net datacontractserializer

使用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;
        }
    }

1 个答案:

答案 0 :(得分:5)

这是你的答案吗

使用OnDeserialized

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

从这里Setting the initial value of a property when using DataContractSerializer