Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TimeSpan[]XmlSerialization_C#_Xml Serialization - Fatal编程技术网

C# TimeSpan[]XmlSerialization

C# TimeSpan[]XmlSerialization,c#,xml-serialization,C#,Xml Serialization,我在myClass中有公共TimeSpan TimeSpan字段。我创建myClass的实例并填充字段。接下来,我想将其序列化为XML并反序列化回对象。我知道Microsoft在TimeSpan序列化方面存在问题,因此我找到了答案并使用了它。 好啊它工作得很好。但是如何使公共TimeSpan[]TimeSpanArrayField类似。在这种情况下,索引器没有帮助 公共TimeSpan TimeSpan字段的代码 解决了 [XmlIgnore] public TimeSpan[]

我在myClass中有公共TimeSpan TimeSpan字段。我创建myClass的实例并填充字段。接下来,我想将其序列化为XML并反序列化回对象。我知道Microsoft在TimeSpan序列化方面存在问题,因此我找到了答案并使用了它。 好啊它工作得很好。但是如何使公共TimeSpan[]TimeSpanArrayField类似。在这种情况下,索引器没有帮助

公共TimeSpan TimeSpan字段的代码

解决了

    [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]);
        }
    }

将其值转换为可以序列化的内容。您始终可以将timespan序列化为一个长[],它在其中存储刻度。然后,您可以使用ticks构造函数将其转换回TimeSpan。@CathalMF,我将TimeSpan转换为字符串,然后再转换回,效果很好。我想为Timespan阵列制作类似的
    [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]);
        }
    }