Puede alguien explicar por qué no es esto posible (al menos en .Net 2.0):C# genéricos: el uso de clase genérica en la cláusula WHERE de método genérico
public class A<T>
{
public void Method<U>() where U : T
{
...
}
}
...
A<K> obj = new A<K>();
obj.Method<J>();
con K siendo la superclase de J
EDIT
He tratado de simplificar el problema para hacer la pregunta más legible, pero claramente exagero. ¡Lo siento!
Mi problema es un poco más específico, supongo. Este es mi código (basado en this):
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;
}
}
y estoy recibiendo este error:
Container.cs(13,24): error CS0305: Using the generic type
Container<T>.PerType<U>' requires
2' type argument(s)
Es posible en 4.0. No es muy útil, porque no usa el parámetro tipo en la firma, pero definitivamente es posible. – dasblinkenlight
Funciona, incluso en .NET 2.0. –
Tiene toda la razón, he editado la pregunta. Lo siento. – andresp