C# 是否可以使用WCF实现惰性逻辑?
我有一个DataObject,它可以被看作一棵树:C# 是否可以使用WCF实现惰性逻辑?,c#,wcf,C#,Wcf,我有一个DataObject,它可以被看作一棵树: [DataContract] public class SomeDataContract { [DataMember] private SomeCollection collection; public SomeCollection Collection { get { if (collection == null) {
[DataContract]
public class SomeDataContract
{
[DataMember]
private SomeCollection collection;
public SomeCollection Collection
{
get
{
if (collection == null)
{
}
}
}
}
[CollectionDataContract]
public class SomeCollection : List<SomeDataContract>
{
}
[DataContract]
公共类数据契约
{
[数据成员]
私人收藏;
公众收藏
{
得到
{
if(集合==null)
{
}
}
}
}
[收集数据合同]
公共类集合:列表
{
}
我不需要下载整个树:)如果我错了,请纠正我,但我认为您要求的是一种机制,其中WCF返回一个占位符对象,并在客户端使用时进一步从服务器检索真实数据(类似于
Lazy
)。如果是这样,答案是否定的,WCF并没有直接提供这样的机制
但是,您可以自己实现一些惰性,并在客户端进行进一步调用以根据需要检索对象。例如:
[DataContract]
public class SomeDataContract
{
[DataMember]
public int Id {get ; set;}
}
如果使用代理生成,它将在客户端生成SomeDataContract
作为分部类。因此,您可以扩展它以添加子属性
属性:
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;
}
}
public分部类SomeDataContract
{
私人可数子女;
可数儿童的公共教育
{
if(_children==null)
{
//调用WCF服务,假设存在这样的方法。。。
_children=GetChildren(this.Id);
}
返回儿童;
}
}
我认为您可以在WCF中指定需要返回多少数据……懒惰的人从何而来?