Maison >développement back-end >C++ >Comment appeler des méthodes statiques à l'aide de Reflection en C# ?

Comment appeler des méthodes statiques à l'aide de Reflection en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 18:45:13883parcourir

How to Invoke Static Methods Using Reflection in C#?

Invoquer des méthodes statiques avec réflexion

Problème :

Vous possédez plusieurs classes statiques au sein du espace de noms mySolution.Macros, chacune contenant des méthodes statiques telles que :

public static class Indent
{
    public static void Run()
    {
        // implementation
    }
}

Votre L'objectif est d'invoquer ces méthodes en utilisant la réflexion, même si elles sont statiques.

Solution :

Pour invoquer des méthodes statiques avec réflexion tout en préservant leur nature statique, utilisez ce qui suit approche :

foreach (var tempClass in macroClasses)
{
    // Note that the first argument is ignored for static methods
    tempClass.GetMethod("Run").Invoke(null, null);
}

Comme mentionné dans la documentation de MethodInfo.Invoke, le premier argument est redondant pour les méthodes statiques, vous pouvez donc passer en toute sécurité null.

Drapeaux de liaison :

Il est important de noter que vous devrez peut-être spécifier des indicateurs de liaison lors de l'appel de la méthode, comme suggéré dans le commentaire :

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);

Cela garantit que la méthode est publique et statique, ce qui est nécessaire pour un appel correct.

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