2014-10-02 81 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]); 
     } 
    }