2014-10-02 88 views
0

我在myClass中有字段public TimeSpan TimeSpanField。我創建了myClass和fill字段的實例。接下來,我想將它序列化爲XML並反序列化回該對象。我知道Microsoft在TimeSpan序列化方面存在問題,因此我找到了答案How to serialize a TimeSpan to XML並使用它。 好!它運作良好。但如何使public TimeSpan[] TimeSpanArrayField類似。在這種情況下索引器(http://msdn.microsoft.com/en-us/library/6x16t2tx.aspx)沒有幫助。TimeSpan [] XmlSerialization

代碼public TimeSpan TimeSpanField

[XmlIgnore] 
    public TimeSpan TimeSpanField; 

    [Browsable(false)] 
    [XmlElement(DataType = "duration", ElementName = "TimeSpanField")] 
    public string TimeSpanFieldString 
    { 
     get 
     { 
      return XmlConvert.ToString(TimeSpanField); 
     } 
     set 
     { 
      TimeSpanField = string.IsNullOrEmpty(value) ? 
       TimeSpan.Zero : XmlConvert.ToTimeSpan(value); 
     } 
    } 
+0

將它的值轉換成你可以序列化的東西。 – Sinatr 2014-10-02 14:40:38

+0

你總是可以序列化一個時間跨度到一個長的存儲蜱的地方。然後您可以使用ticks構造函數將其轉換回TimeSpan。 – CathalMF 2014-10-02 14:54:32

+0

@CathalMF,我將TimeSpan轉換爲字符串並返回,它效果很好。 我想爲Timespan數組做類似的工作 – 2014-10-02 15:03:41

回答

0

解決。

[XmlIgnore] 
    public TimeSpan[] TimeSpanArrayField; 

    [Browsable(false)] 
    [XmlElement(DataType = "duration", ElementName = "TimeSpanField")] 
    public string[] TimeSpanFieldString 
    { 
     get 
     { 
      string[] strings = new string[TimeSpanArrayField.Length]; 
      for (int number = 1; number <= TimeSpanArrayField.Length; number++) 
       strings[number - 1] = TimeSpanArrayField[number - 1].ToString(); 
      return strings; 
     } 
     set 
     { 
      TimeSpanArrayField = new TimeSpan[value.Length]; 
      for (int number = 1; number <= value.Length; number++) 
       TimeSpanArrayField[number - 1] = TimeSpan.Parse(value[number - 1]); 
     } 
    }