以下XML按预期工作:
<?xml version="1.0" encoding="utf-8" ?>
<collection xmlns:ns2="http://www.w3.org/2005/Atom">
<workflow uuid="76b936ba-d52e-4304-b562-01676d35ad43">
<name>Hello World</name>
<description>Hello World Example</description>
<links>
<ns2:link href="http://localhost/rest/workflows/self" rel="self"/>
<ns2:link href="http://localhost/rest/workflows" rel="list"/>
<ns2:link href="http://localhost/rest/workflows/jobs" rel="execute"/>
</links>
</workflow>
</collection>
但这不是......
<?xml version="1.0" encoding="utf-8" ?>
<collection xmlns:ns2="http://www.w3.org/2005/Atom">
<workflow uuid="76b936ba-d52e-4304-b562-01676d35ad43">
<name>Hello World</name>
<description>Hello World Example</description>
<ns2:link href="http://localhost/rest/workflows/self" rel="self"/>
<ns2:link href="http://localhost/rest/workflows" rel="list"/>
<ns2:link href="http://localhost/rest/workflows/jobs" rel="execute"/>
</workflow>
</collection>
以下是我的班级定义:
public class WfaCollection {
public WfaWorkflow workflow { get; set; }
public string name { get; set; }
public string description { get; set; }
[XmlElement("link")]
public List<WfaLink> links { get; set; }
}
public class WfaWorkflow{
public string uuid{get; set;}
}
public class WfaLink {
public string href { get; set; }
public string rel { get; set; }
}
documentation表示内联XML列表应该很好用......所以我做错了什么?我已经阅读了很多关于反序列化的帖子,但没有一个像我一样微不足道!让我觉得有点愚蠢!麻烦的是,我无法控制XML。
答案 0 :(得分:0)
通过挖掘代码,我看到我的列表没有被填充,因为方法map()具有以下内容: else if(type.IsGenericType){ ... } else if(type.IsSubclassOfRawGeneric(typeof(List&lt;&gt;))){ ... }
第二个条目未被执行,因为第一个条目捕获了我的List&lt;&gt;类型定义。如果我按如下方式更改第一个条目if子句,一切似乎都按预期工作:
else if(type.IsGenericType&amp;&amp;!type.IsSubclassOfRawGeneric(typeof(List&lt;&gt;))){...}
这是一个错误吗?