考虑这个通用类:
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> {}
它可供TListList
的成员使用:
where
这是可能的吗?我只是以错误的方式去做,或者语言是不是能够做到这一点?
答案 0 :(得分:1)
不,这是不可能的。每个不同的泛型类型必须提前声明 - 您不能在列表T
中省略<U, T>
,因为T
是未声明的标识符。
(另外,我确定你知道这一点,但是从List<>
继承是一件非常糟糕的事情。实现IList<>
,然后委托给一个实现。)