I tienen las siguientes clasesUso de una clase base genérica como un parámetro de un método
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
Lo que me gusta a, es disponer de un método que puede tomar cualquier clase derivada de B<T>
, como C1
o C2
como un parámetro. Pero declarar un método como
public void MyMethod(B<T> x)
no funciona, se produce el error del compilador
error CS0246: El tipo o espacio de nombres `T' no se pudo encontrar. ¿Te estás perdiendo una directiva de uso o una referencia de ensamblaje? (CS0246)
Estoy bastante atrapado aquí. Crear una clase base no genérica para B<T>
no funcionará, ya que no podría derivar de A<T>
de esa manera. La única solución (fea) que pude pensar es definir una interfaz ficticia vacía que está "implementada" en B<T>
. ¿Hay una manera más elegante?
impresionante. Sabía que funcionaría, si hago el método genérico, pero pensé que tenía que especificar el tipo al llamar explícitamente. Muchas gracias. – mat