我有通用的容器類我正在使用,我試圖寫一個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