假设我有一个ItemType的PageCollectionView,其中T是项目中定义的某个用户类。我的ItemType类有一个名为IsSelected的属性,我想对其执行查询。实际上,这就是我想要做的事情:
var objects = Source.SourceCollection.OfType<ItemType<>>().Where(t => t.IsSelected);
当然这不起作用,因为ItemType泛型需要一个类型。我不能指定集合的真实类型,因为我不知道它在这个级别(加上我不想硬编码真实类型,无论如何,打败了通用的目的)。最有可能的是,我可以找到一种使用反射的方法,但我宁愿不考虑可读性。有没有办法做到这一点?
谢谢!
答案 0 :(得分:0)
为什么不定义界面?
public interface ISelectable
{
pubilc bool IsSelected { get; }
}
public class ItemType<T> : ISelectable
{
...
}
var objects = Source.SourceCollection
.OfType<ISelectable>()
.Where(t => t.IsSelected);