Heim > Backend-Entwicklung > C++ > Wie kann ich die Typvererbung (einschließlich der Basisklasse selbst) in C# zuverlässig überprüfen?

Wie kann ich die Typvererbung (einschließlich der Basisklasse selbst) in C# zuverlässig überprüfen?

Linda Hamilton
Freigeben: 2025-01-09 15:01:43
Original
526 Leute haben es durchsucht

How Can I Reliably Check for Type Inheritance (Including the Base Class Itself) in C#?

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 IsSameOrSubclassMethode

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage