Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以使用WCF实现惰性逻辑?_C#_Wcf - Fatal编程技术网

C# 是否可以使用WCF实现惰性逻辑?

C# 是否可以使用WCF实现惰性逻辑?,c#,wcf,C#,Wcf,我有一个DataObject,它可以被看作一棵树: [DataContract] public class SomeDataContract { [DataMember] private SomeCollection collection; public SomeCollection Collection { get { if (collection == null) {

我有一个DataObject,它可以被看作一棵树:

[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中指定需要返回多少数据……懒惰的人从何而来?