c# - DataContractSerializer 中缺失数据成员的默认值

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

最佳答案

这就是你的答案吗

使用 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/

相关文章:

c# - 树结构的序列化/反序列化

c# - 读取数据表中没有标题行的 .XLS 文件

c# - 在 DataContract 中设置默认值?

c# - 如何在查询参数不加倍其值的情况下进行 URL 重写?

c# - 强制垃圾收集或反射到 Private 领域,哪个更不邪恶?

.net - 使用 WCF 格式化 json 响应

c# - 如何使用 C# 在文本框中查找插入符位置?

wcf - WCF 服务返回的对象层次结构与预期不同

c# - Java 与 C# 方法/函数返回类型重写?

c# - 将sql查询命令超时设置为max的负面影响