Maison > développement back-end > C++ > Comment puis-je vérifier de manière fiable l'héritage de type (y compris la classe de base elle-même) en C# ?

Comment puis-je vérifier de manière fiable l'héritage de type (y compris la classe de base elle-même) en C# ?

Linda Hamilton
Libérer: 2025-01-09 15:01:43
original
525 Les gens l'ont consulté

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

Vérifications fiables de l'héritage de type C# : y compris la classe de base

Vérifier l'héritage de type en C#, notamment si un type est la classe de base elle-même, nécessite un examen attentif. La méthode standard typeof(SubClass).IsSubclassOf(typeof(BaseClass)) fonctionne bien pour les sous-classes mais échoue lors de la comparaison d'un type à sa propre classe de base (renvoyant false).

Répondre aux limites des méthodes existantes

Plusieurs approches existent, chacune avec des limites :

  • Type.IsSubclassOf : Identifie uniquement les sous-classes, pas la classe de base elle-même.
  • Type.IsAssignableFrom : Inclut les classes de base, mais peut renvoyer true pour des types non liés avec des conversions implicites ou explicites.
  • Opérateurs
  • is et as : Opèrent sur des objets, et non sur des objets Type directement.

Une solution robuste : la IsSameOrSubclassMéthode

Pour pallier ces limitations, une méthode personnalisée apporte une solution fiable :

<code class="language-csharp">public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
{
    return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase;
}</code>
Copier après la connexion

Cette méthode détermine avec précision si potentialDescendant est soit une sous-classe de, soit identique à potentialBase. Il combine le IsSubclassOf contrôle avec une comparaison directe d'égalité, garantissant une vérification complète et précise de l'héritage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal