在XPO中,设如上图的个例子,当需要取出所有Customer时,我们可以简单的

XPCollection<CustomerBase> xpCustomers = new XPCollection<CustomerBase>(session1);

 但是此时我们只能访问基类的成员。假设CustomerRegistered有一名为OwnedProducts的属性,则无法访问到了,因为对基类CustomerBase来说,它并不认识这个属性。

使用XPO的UpCasting特性则可以简单的解决这个问题。只需要修改xpCustomers的XPBaseCollection.DisplayableProperties属性为类似:"Oid;CustomerName;<CustomerRegistered>OwnedProducts"的形式即可。

同样的技巧亦可以用在构造查询条件中,如:

XPCollection<CustomerBase> xpCustomers = new XPCollection<CustomerBase>(session1, CriteriaOperator.Parse("<CustomerRegistered>OwnedProducts = 'XtraGrid' or <CustomerTrialed>TrialedProducts = 'XtraGrid'" ));

posted on 2010-02-03 14:58  Elvin Chen  阅读(499)  评论(0编辑  收藏  举报