2014-09-26 24 views
1

我有一個沒有設置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; 

究竟是什麼,我需要這個時間戳部件設置,使得它在反序列化可選(=不是需要在該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; 
} 
+0

不要包含在序列化過程中。因爲,它是一個可選成員;在使用服務方法/操作時不要傳遞它。 – Rahul 2014-09-26 11:57:47

+0

Rahul我正在序列化/從XML。當試圖反序列化已經存在的xml並沒有Timestamp的時候,問題就出現了,但我仍然希望它沒有異常地反序列化。 – Blub 2014-09-26 12:40:39

回答

0

您可以使用方法SouldSerializeReset,至極可以定義任何屬性。

一個屬性叫做TimeStamp,您可以編寫方法SouldSerializeTimeStampResetTimeStamp

MSDNResetTimeStamp會給你TimeStampSouldSerializeTimeStamp默認值將被用於序列化或不TimeStamp

+0

似乎並沒有涉及Datacontracts/Datamember序列化 – Blub 2014-09-26 15:02:21

+0

它確實在;)嘗試一下,看看它是否回答你的問題。 – Xaruth 2014-09-26 15:18:14

+0

Xaruth我嘗試了你的建議,但仍然是同樣的錯誤。我編輯了我的帖子。 – Blub 2014-09-29 12:00:51