2014-09-06 41 views
-1

我有一个数据对象,它可以被看作是一棵树:是否可以使用WCF实现Lazy Logic?

[DataContract] 
public class SomeDataContract 
{ 
    [DataMember] 
    private SomeCollection collection; 
    public SomeCollection Collection 
    { 
     get 
     { 
      if (collection == null) 
      { 

      } 
     } 
    } 
} 

[CollectionDataContract] 
public class SomeCollection : List<SomeDataContract> 
{ 
} 

我并不需要下载整个树:)

+0

我想你可以指定你WCF之后,你有多少数据要回来... – 2014-09-06 09:26:43

+0

哪里偷懒进来吗? – Carsten 2014-09-06 09:50:55

回答

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; 
    } 
} 
相关问题