ho le seguenti classiUtilizzando una classe base generica come parametro di un metodo
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
Nei vorrei a, è un metodo che può assumere qualsiasi classe derivata da B<T>
, come C1
o C2
come parametro Ma dichiarando un metodo come
public void MyMethod(B<T> x)
non funziona, produce l'errore del compilatore
CS0246 Errore: Il nome del tipo o dello spazio dei nomi `T' non è stato trovato. Ti manca una direttiva using o un riferimento assembly? (CS0246)
Sono abbastanza bloccato qui. La creazione di una baseclass non generica per B<T>
non funzionerà, dal momento che non sarei in grado di derivare da A<T>
in questo modo. L'unica (brutta) soluzione che potrei pensare è definire un'interfaccia fittizia vuota che sia "implementata" da B<T>
. C'è un modo più elegante?
impressionante. Sapevo che avrebbe funzionato, se avessi reso il metodo generico, ma ho pensato che dovevo specificare il tipo dopo aver chiamato esplicitamente. Grazie mille. – mat