我有一个返回复杂值的网络服务(这是一棵树)
public class DocumentTreeNode
{
public MyDocument Data
{ get; set;}
private LinkedList<DocumentTreeNode> _children;
public IEnumerable<DocumentTreeNode> Children
{
get
{
return _children.AsEnumerable();
}
}
(...)
}
不幸的是,当我调用网络服务时,它返回
<?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 无法正确序列化我的类(class)(由于 IEnumerable?)。我打算使用 Xml 序列化并让我的服务返回一个 XmlDocument,但我认为这不是最好的方法。
传递这个对象的最简单方法是什么(只需最少的工作)?
最佳答案
序列化程序会跳过返回接口(interface)的属性。它需要一个具体的类型,否则如果不发送额外的类型元数据,就不可能再水合,这不是 OOTB 序列化的一部分。
关于asp.net - 如何使用 web 服务返回接口(interface)或 "complex"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575366/