ich eine generische abstrakte Klasse, die ich aus ableiten:Wie um zu bestimmen, ob ein Objekt von einer abstrakten generischen Klasse erbt
abstract class SuperClass<T>
where T : SuperDataClass
abstract class SuperDataClass
Der Datentyp SuperDataClass beschränkt ist, so dass jeder konkreter Datentyp von SuperDataClass erben muß . Am Ende habe ich Paare von Oberklasse und SuperDataClass inheriters haben, z.B .:
class DataClassA : SuperDataClass
class ClassA : SuperClass<DataClassA>
class DataClassB : SuperDataClass
class ClassB : SuperClass<DataClassB>
Wie kann ich überprüfen, ob ein Objekt, zum Beispiel ClassA erbt von SuperClass, ohne den möglichen Datentyp zu kennen?
habe ich versucht, die folgenden, die nicht funktioniert:
if (testObject.GetType().IsAssignableFrom(typeof(SuperClass<SuperDataClass>))) {
Console.WriteLine("The test object inherits from SuperClass");
}
Wie funktioniert die if-Anweisung aussehen muss?
Ich bin sehr neugierig, warum Sie dies während der Laufzeit wissen wollen. Können Sie das näher ausführen, um meine Neugier zu befriedigen? –
Versuchen Sie mit * ist * Operator http://msdn.microsoft.com/en-us/library/scekt9xw.aspx – Kimi
Ich habe eine Methoden, die mehrere Arten von Objekten verarbeitet. Sie alle haben eine abstrakte Klasse gemeinsam, die in meinem Beispiel SuperClass stammt. Ich möchte also alle Objekte, die von SuperClass stammen, während der Laufzeit auf die gleiche Weise behandeln. Ich möchte, wenn möglich, nicht für jeden Betontyp eine separate Handhabung haben. –
sqeez3r