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

这是你的答案吗?

使用OnDeserialized

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

从此处设置使用DataContractSerializer时属性的初始值