我有一个DataObject,可以看作是树:
[DataContract]
public class SomeDataContract
{
[DataMember]
private SomeCollection collection;
public SomeCollection Collection
{
get
{
if (collection == null)
{
}
}
}
}
[CollectionDataContract]
public class SomeCollection : List<SomeDataContract>
{
}
我不需要下载整棵树:)
答案 0 :(得分:1)
如果我错了,请纠正我,但我认为你要求的机制是WCF返回一个占位符对象,它进一步从服务器中检索真实数据,因为它在客户端使用(类似于Lazy<T>
)。如果是这样,答案是否定的,WCF不直接提供这样的机制。
但是,您可以自己实现一些懒惰,并在客户端进一步调用以根据需要检索对象。例如:
[DataContract]
public class SomeDataContract
{
[DataMember]
public int Id {get ; set;}
}
如果您正在使用代理生成,它将在客户端生成SomeDataContract
作为部分类。因此,您可以扩展它以添加Children
属性:
public partial class SomeDataContract
{
private IEnumerable<SomeDataContract> _children;
public IEnumerable<SomeDataContract> Children
{
if(_children == null)
{
// call the WCF service, assuming such a method exists...
_children = GetChildren(this.Id);
}
return _children;
}
}