谁能解释为什么这不可能(至少在.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' 类型参数