我有一个DataObject,可以将其视为树:
[DataContract]
public class SomeDataContract
{
[DataMember]
private SomeCollection collection;
public SomeCollection Collection
{
get
{
if (collection == null)
{
}
}
}
}
[CollectionDataContract]
public class SomeCollection : List<SomeDataContract>
{
}
我不需要下载整个树:)
如果我错了,请纠正我,但是我认为您正在寻求一种机制,其中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;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句