0

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

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

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

谢谢!

4

1 回答 1

0

为什么不定义接口?

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

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

var objects = Source.SourceCollection
   .OfType<ISelectable>()
   .Where(t => t.IsSelected);
于 2012-11-28T21:10:12.423 回答