我有通用的容器类我正在使用,我试图写一个OfType例程。然而,我传入的类型也是泛型。这里有一个例子:如何编写OfType <Foo<Bar>>()
Entities.OfType<Foo<Bar>>()
和我的函数定义:
public IEnumerable T OfType<T>()
{
foreach (var e in Values)
if (e is T)
yield return (T)e;
}
如果实体被定义为Foo<Base>
集合我得到一个错误Foo<Bar>
不会Foo<Base>
继承。但是Bar继承自Base。
有没有办法解决这个限制?
查找协变和逆变。 – Mehrdad 2011-01-20 15:19:15