Ich muss testen, ob ein Wert eine Instanz einer generischen Basisklasse ist, ohne den generischen Typparameter zu kennen. Mit Hilfe der MSDN example als Basis meines Beispiel ist es das, was ich erreichen möchte:Ermitteln, ob das Objekt eine Instanz einer generischen Basisklasse ist, irgendein generischer Typ
using System;
public class Class1<T> { }
public class DerivedC1 : Class1<int> { }
class IsSubclassTest
{
public static void Main()
{
Console.WriteLine(
"DerivedC1 subclass of Class1: {0}",
typeof(DerivedC1).IsSubclassOf(typeof(Class1<>)) // <- Here.
);
}
}
Während diese syntaktisch korrekt ist, ist es immer falsch ergibt. Wenn ich den generischen Typparameter entferne, funktioniert er wie erwartet (gibt true zurück).
Wie kann ich testen, ob ein Klassentyp eine Unterklasse einer generischen Basisklasse ist, ohne dessen generischen Typparameter zu kennen?
@JohnWhite Wenn Ihre Prüfungen nicht mit Reflektion und Typen mit vollständigen Typnamen implementiert werden, sollten Sie die Typen von verschiedenen Baugruppen überprüfen, da Sie Ihre Prüfungen stark eingeben. –
Nach langem Zögern habe ich Ihre Antwort gewählt, denn IMO bietet die beste Erklärung für das, was passiert, obwohl alle Antworten von höchster Qualität sind. Vielen Dank. –