RestSharp没有对XML内联列表进行反序列化

时间:2015-08-18 12:38:45

标签: xml restsharp

以下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。

1 个答案:

答案 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;))){...}

这是一个错误吗?