Maison > développement back-end > C++ > Comment puis-je déterminer si un type hérite d'une classe de base générique en C# ?

Comment puis-je déterminer si un type hérite d'une classe de base générique en C# ?

Patricia Arquette
Libérer: 2025-01-24 19:06:10
original
592 Les gens l'ont consulté

How Can I Determine if a Type Inherits from a Generic Base Class in C#?

détecter si le type en C # hérite du type génétique

Dans la programmation, la relation entre les classes (particulièrement impliquée dans l'héritage) est généralement nécessaire. Cependant, lors du traitement de la classe générique avec des paramètres de type, il peut être difficile de vérifier l'héritage par des méthodes standard.

Question:

En supposant que vous avez les génériques et les dérivés suivants:

Vous souhaitez vérifier si l'objet de type donné (par exemple,

) indique le type d'héritage de
<code class="language-csharp">public class GenericClass<T> : GenericInterface<T>
{
}

public class Test : GenericClass<SomeType>
{
}</code>
Copier après la connexion
. Cependant, l'utilisation de

échouera car elle ne tient pas compte des paramètres génériques. typeof(Test) GenericClass Solution: typeof(Test).IsSubclassOf(typeof(GenericClass))

Afin de résoudre ce problème, vous pouvez utiliser le code suivant pour déterminer si le type est dérivé du type génétique:

Cette méthode détermine si

est directement ou indirectement hérité de

en traversant la chaîne d'héritage et en comparant le type de base. Il traite les types non génériques et génériques en vérifiant la présence des attributs et en récupérant la définition des types génériques.
<code class="language-csharp">static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) {
    while (toCheck != null && toCheck != typeof(object)) {
        var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
        if (generic == cur) {
            return true;
        }
        toCheck = toCheck.BaseType;
    }
    return false;
}</code>
Copier après la connexion

Grâce à cette méthode, vous pouvez déterminer avec précision si le type est dérivé du type génétique, quel que soit le paramètre de type spécifié. toCheck generic Exemple: IsGenericType

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