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.is
et as
: Opèrent sur des objets, et non sur des objets Type
directement.Une solution robuste : la IsSameOrSubclass
Mé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!