考虑这个通用类:
class TList<T> : System.Collections.Generic.List<T> {
}
我有另一个包含这些列表的通用列表类,可能需要处理它们的成员:
class TListList<U, T> : System.Collections.Generic.List<U> where U : TList<T>
{
public void Foo() {
foreach(U list in this) {
T bar = list[0];
}
}
}
这是一个具体的实现:
class FooList : TList<Foo> {}
class FooListList : TListList<FooList, Foo> {}
我想做的是在规范中删除 T 类型参数,TListList
并让编译器在子句中注意到它,where
并使其对 的成员可用TListList
:
class TListList<U> where U : TList<T> { ...same Foo() as above... }
class FooList : TList<Foo> {}
class FooListList : TListList<FooList> {}
这可能吗,我只是走错了路,还是语言无法做到这一点?