默认值丢失数据成员在DataContractSerializer的(Default Values F

2019-09-19 06:53发布

随着下面的DataContract两个数据成员,然后使用的DataContractSerializer,预期只有名称被序列化。 我的问题是,当我反序列化的文件。 “名称”被读出并正确加载,但作为“超时”不存在我希望它留在“TimeSpan.FromHours(12)”的默认。 什么INFACT情况是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;
        }
    }

Answer 1:

这是你的答案,然后

使用OnDeserialized

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

从这里使用的DataContractSerializer时设置属性的初始值



文章来源: Default Values For Missing Data Members In DataContractSerializer