如何在C#中引用泛型类型的内部泛型类型

时间:2012-09-20 21:03:06

标签: c# generics

考虑这个通用类:

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

这是可能的吗?我只是以错误的方式去做,或者语言是不是能够做到这一点?

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。每个不同的泛型类型必须提前声明 - 您不能在列表T中省略<U, T>,因为T是未声明的标识符。

(另外,我确定你知道这一点,但是从List<>继承是一件非常糟糕的事情。实现IList<>,然后委托给一个实现。)