Zuverlässige C#-Typ-Vererbungsprüfungen: Einschließlich der Basisklasse
Die Überprüfung der Typvererbung in C#, einschließlich der Frage, ob ein Typ die Basisklasse selbst ist, erfordert sorgfältige Überlegungen. Die Standardmethode typeof(SubClass).IsSubclassOf(typeof(BaseClass))
funktioniert gut für Unterklassen, schlägt jedoch fehl, wenn ein Typ mit seiner eigenen Basisklasse verglichen wird (und false
zurückgibt).
Umgang mit den Einschränkungen bestehender Methoden
Es gibt mehrere Ansätze, jeder mit Einschränkungen:
Type.IsSubclassOf
: Identifiziert nur Unterklassen, nicht die Basisklasse selbst.Type.IsAssignableFrom
: Enthält Basisklassen, kann jedoch true
für nicht verwandte Typen mit impliziten oder expliziten Konvertierungen zurückgeben.is
- und as
-Operatoren: Arbeiten an Objekten, nicht Type
direkt an Objekten.Eine robuste Lösung: Die IsSameOrSubclass
Methode
Um diese Einschränkungen zu überwinden, bietet eine benutzerdefinierte Methode eine zuverlässige Lösung:
<code class="language-csharp">public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
Diese Methode bestimmt genau, ob potentialDescendant
entweder eine Unterklasse von potentialBase
ist oder mit dieser identisch ist. Es kombiniert die IsSubclassOf
Prüfung mit einem direkten Gleichheitsvergleich und gewährleistet so eine umfassende und genaue Erbschaftsprüfung.
Das obige ist der detaillierte Inhalt vonWie kann ich die Typvererbung (einschließlich der Basisklasse selbst) in C# zuverlässig überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!