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
Linda Hamiltonoriginal
2025-01-09 15:01:43619parcourir

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>

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!

Déclaration:
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