反序列化在序列化

时间:2017-07-12 12:53:54

标签: c# serialization

我有类TestCase,其中包含结果列表:

[XmlRoot("TestCase")]
public class TestCase
{
    [XmlAttribute("Name")]
    public string Name { get; set; }
    [XmlElement("Results", typeof(List<TestCaseResult>))]
    public List<TestCaseResult> Results
    {
        get
        {
            return results.OrderByDescending(x => x.Time).ToList();
        }
        set
        {
            results = value;
        }
    }

TestCaseResult看起来像这样:

[XmlRoot("TestCaseResult")]
public class TestCaseResult
{
    [XmlElement("HtmlPath")]
    public string HtmlPath { get; set; }
    [XmlElement("Status")]
    public string Status { get; set; }
    [XmlElement("FailedCommand")]
    public string FailedCommand { get; set; }
    [XmlElement("Time")]
    public DateTime Time { get; set; }

我做的是,我将测试用例收集到List中,然后我将其序列化。 我序列化整个列表,之后我反序列化它并且List是空的。但结果正确存储在xml中。我做错了什么?

编辑:将setter添加到TestCase.Results,但它没有帮助,问题仍然存在。结果被反序列化为空。

2 个答案:

答案 0 :(得分:1)

如果您的意思是Results为空,则需要此属性的setter

[XmlElement("Results", typeof(List<TestCaseResult>))]
public List<TestCaseResult> Results
{
    get
    {
        return results.OrderByDescending(x => x.Time).ToList();
    }
    set
    {
        results = value;
    }
}

答案 1 :(得分:0)

看起来问题出在实际的getter上,它返回了排序列表。

可能在反序列化时,框架要求List然后填充它,当我订购列表时我实际上创建了新列表,因此原始版本从未填充。