Ich habe die folgenden KlassenMit Hilfe einer generischen Basisklasse als Parameter einer Methode
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
Was möchte ich an, ein Verfahren ist haben, die jede Klasse von B<T>
, wie C1
oder C2
abgeleitet nehmen als ein Parameter. Aber erklärt ein Verfahren, wie
public void MyMethod(B<T> x)
nicht funktioniert, liefert es den Compilerfehler
CS0246 Fehler: Der Typ oder Namespace-Name `T‘ konnte nicht gefunden werden. Vermissen Sie eine using-Direktive oder eine Assembly-Referenz? (CS0246)
Ich bin hier ziemlich fest. Das Erstellen einer nicht-generischen Basisklasse für B<T>
funktioniert nicht, da ich nicht auf diese Weise von A<T>
ableiten könnte. Die einzige (hässliche) Lösung, die ich mir vorstellen kann, ist eine leere Dummy-Schnittstelle zu definieren, die von B<T>
"implementiert" wird. Gibt es einen eleganteren Weg?
ehrfürchtig. Ich wusste, dass es funktionieren würde, wenn ich die Methode generisch machen würde, aber ich dachte, dass ich den Typ beim Aufruf explizit angeben müsste. Vielen Dank. – mat