これが不可能な理由を誰かが説明できますか(少なくとも.Net 2.0では):
public class A<T>
{
public void Method<U>() where U : T
{
...
}
}
...
A<K> obj = new A<K>();
obj.Method<J>();
K は J のスーパークラスです。
編集
質問を読みやすくするために問題を単純化しようとしましたが、明らかにやりすぎました。ごめん!
私の問題はもう少し具体的だと思います。これは私のコードです(これに基づいています):
public class Container<T>
{
private static class PerType<U> where U : T
{
public static U item;
}
public U Get<U>() where U : T
{
return PerType<U>.item;
}
public void Set<U>(U newItem) where U : T
{
PerType<U>.item = newItem;
}
}
そして、私はこのエラーが発生しています:
Container.cs(13,24): エラー CS0305: ジェネリック型
Container<T>.PerType<U>' requires
2' 型引数の使用