如何使用Web服务返回接口或“复杂”值?

时间:2010-08-26 13:13:03

标签: asp.net web-services linked-list

我有一个返回复杂值的web服务(这是一棵树)

public class DocumentTreeNode
{
    public MyDocument Data
    { get; set;}

    private LinkedList<DocumentTreeNode> _children;

    public IEnumerable<DocumentTreeNode> Children
    {
        get
        {
            return _children.AsEnumerable();
        }
    }

    (...)
}

不幸的是,当我调用webservice时,它会返回

<?xml version="1.0" encoding="utf-8"?>
<DocumentTreeNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns="http://tempuri.org/" />

我已经仔细检查了,我应该返回的对象不是空的。

我猜这意味着ASP.Net无法正确序列化我的类(由于IEnumerable?)。我打算使用Xml序列化并让我的服务返回一个XmlDocument,但我不认为这是最好的方法。

传递此对象的最简单方法是什么?(只需最少的工作)?

1 个答案:

答案 0 :(得分:1)

序列化程序会跳过返回接口的属性。它需要一个具体的类型,否则如果没有附加的类型元数据,就不可能进行重新水合,这不是OOTB序列化的一部分。