使用 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);
}
从这里 Setting the initial value of a property when using DataContractSerializer
关于c# - DataContractSerializer 中缺失数据成员的默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11417436/