Maison >développement back-end >C++ >Comment la réflexion .NET peut-elle être utilisée pour découvrir toutes les constantes d'un type ?

Comment la réflexion .NET peut-elle être utilisée pour découvrir toutes les constantes d'un type ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-06 02:36:40884parcourir

How Can .NET Reflection Be Used to Discover All Constants of a Type?

Explorer la découverte de constantes par réflexion

Dans le domaine de la programmation orientée objet, comprendre comment récupérer toutes les constantes associées à un type particulier est une tâche inestimable pour l’introspection et l’analyse du code. Heureusement, la réflexion .NET offre une solution élégante à ce défi.

Grâce à la méthode GetFields, nous pouvons accéder à tous les champs déclarés dans un type spécifique, y compris les constantes. Cependant, nous devons filtrer ceux qui répondent à des critères spécifiques tels que le fait d'être publics, statiques et immuables (représentés par les indicateurs IsLiteral et IsInitOnly).

Une approche consiste à parcourir tous les champs et à ajouter ceux-ci de manière sélective. qui satisfont à nos conditions. Ceci peut être réalisé à l'aide d'un extrait de code similaire au suivant :

private FieldInfo[] GetConstants(System.Type type)
{
    ArrayList constants = new ArrayList();

    FieldInfo[] fieldInfos = type.GetFields(
        BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

    foreach(FieldInfo fi in fieldInfos)
        if(fi.IsLiteral && !fi.IsInitOnly)
            constants.Add(fi);           

    return (FieldInfo[])constants.ToArray(typeof(FieldInfo));
}

Cette solution fournit un moyen fiable d'obtenir une liste de toutes les constantes associées à un type, ce qui la rend adaptée aux outils et au code basés sur la réflexion. scénarios d'introspection.

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