如何在反序列化时使数据库可选?

时间:2014-09-26 11:50:37

标签: wcf datacontractserializer

我有一个没有设置TimeStamp的xml。我在这里尝试了所有可能的组合,但在反序列化时,它总是抛出异常:There was an error deserializing the object of type MyType. The value '' cannot be parsed as the type 'DateTime'.

    [DataMember(IsRequired = false, EmitDefaultValue = false)]
    public DateTime TimeStamp = DateTime.Now;

我需要在此TImeStamp成员上设置什么,以便在反序列化时可选(=不需要在xml中)

编辑:我在Xaruth的建议中尝试过:

[DataMember]
[DefaultValue(typeof(DateTime), "2014-08-25T09:31:09.2477328+02:00")]
public DateTime TimeStamp { get; set; }

public bool ShouldSerializeTimeStamp()
{
    return TimeStamp != null;
}

public void ResetTimeStamp()
{
    TimeStamp = DateTime.Now;
}

1 个答案:

答案 0 :(得分:0)

您可以使用方法SouldSerializeReset,可以为任何属性定义。

对于名为TimeStamp的属性,您可以编写方法SouldSerializeTimeStampResetTimeStamp

根据MSDNResetTimeStamp会为您提供TimeStamp的默认值,SouldSerializeTimeStamp将用于序列化或不TimeStamp

相关问题