解决此问题的一种方法是使用您自己的延迟加载(和其他)业务逻辑包装代理对象。换句话说,假设您有一个名为 Order 的 WCF 代理和一个服务方法 GetOrderLineItems()。
public class Order
{
private Proxies.Order _order;
private List<OrderLineItem> _lineItems;
public string Name
{
get { return _order.Name; }
}
public List<OrderLineItem> LineItems
{
if (_lineItems == null)
{
_lineItems = //Make the service call to get these objects
}
}
}
另一种综合方法是向代理对象添加扩展方法:
public static List<Proxies.OrderLineItem> GetLineItems(this Proxies.Order order)
{
//Make the service call to get the line items
}
这将允许您执行以下操作:
var lineItems = order.GetLineItems();