从PagedCollectionView获取泛型类型的集合

时间:2012-11-28 20:23:41

标签: c#

假设我有一个ItemType的PageCollectionView,其中T是项目中定义的某个用户类。我的ItemType类有一个名为IsSelected的属性,我想对其执行查询。实际上,这就是我想要做的事情:

var objects = Source.SourceCollection.OfType<ItemType<>>().Where(t => t.IsSelected);

当然这不起作用,因为ItemType泛型需要一个类型。我不能指定集合的​​真实类型,因为我不知道它在这个级别(加上我不想硬编码真实类型,无论如何,打败了通用的目的)。最有可能的是,我可以找到一种使用反射的方法,但我宁愿不考虑可读性。有没有办法做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不定义界面?

public interface ISelectable
{
   pubilc bool IsSelected { get; }
}

public class ItemType<T> : ISelectable
{
   ...
}

var objects = Source.SourceCollection
   .OfType<ISelectable>()
   .Where(t => t.IsSelected);