我有类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,但它没有帮助,问题仍然存在。结果被反序列化为空。
答案 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然后填充它,当我订购列表时我实际上创建了新列表,因此原始版本从未填充。