このジェネリック クラスを検討してください。
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> {}
これは可能で、間違った方法で行っているだけですか、それとも言語がこれに対応していないだけですか?