Mam następujące klasyKorzystanie z ogólnej klasy bazowej jako parametr metody
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
Co chciałbym aby jest mieć metodę, która może przyjąć dowolną klasę pochodną od B<T>
, jak C1
lub C2
jako parametr. Ale deklarując metodę jako
public void MyMethod(B<T> x)
nie działa, to daje błąd kompilatora
Błąd CS0246: Typ lub obszaru nazw `T” nie może zostać odnaleziona. Brakuje dyrektywy użycia lub odwołania do zespołu? (CS0246)
Utknąłem tutaj. Utworzenie nietypowej klasy bazowej dla B<T>
nie będzie działać, ponieważ nie będę w stanie uzyskać takiej wartości z A<T>
. Jedynym (brzydkim) rozwiązaniem, które mogłem wymyślić jest zdefiniowanie pustego interfejsu-atrapa, który jest "implementowany" przez B<T>
. Czy istnieje bardziej elegancki sposób?
niesamowite. Wiedziałem, że to zadziała, gdybym uczynił tę metodę ogólną, ale pomyślałem, że muszę wyraźnie określić typ podczas wywoływania. Wielkie dzięki. – mat