Maison > développement back-end > C++ > Comment puis-je utiliser Reflection en C# pour appeler des méthodes privées ?

Comment puis-je utiliser Reflection en C# pour appeler des méthodes privées ?

Susan Sarandon
Libérer: 2025-01-25 05:32:13
original
804 Les gens l'ont consulté

How Can I Use Reflection in C# to Invoke Private Methods?

Accès aux méthodes privées avec C# Reflection

En C#, les méthodes privées sont généralement masquées pour des raisons d'encapsulation et de sécurité. Cependant, des situations peuvent survenir dans lesquelles l'appel dynamique de ces méthodes privées au moment de l'exécution devient nécessaire. C'est là que le pouvoir de la réflexion entre en jeu.

Les appels

Standard GetMethod() récupèrent uniquement les méthodes publiques, protégées et internes. Pour accéder aux méthodes privées, vous devez utiliser la version surchargée de GetMethod() et spécifier le bon BindingFlags.

La solution :

La clé est d'utiliser le BindingFlags approprié dans l'appel GetMethod(). Voici comment :

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });</code>
Copier après la connexion

Cet extrait de code récupère la méthode privée (nommée dynamiquement en utilisant "Draw_" itemType) puis l'invoque en utilisant dynMethod.Invoke().

Comprendre les BindingFlags :

L'énumération BindingFlags contrôle quels membres sont inclus dans la recherche. Pour l'appel de méthode privée, BindingFlags.NonPublic et BindingFlags.Instance sont cruciaux :

  • BindingFlags.NonPublic : Ce drapeau inclut les membres non publics (privés et protégés).
  • BindingFlags.Instance : Cet indicateur restreint la recherche aux méthodes d'instance, à l'exclusion des méthodes statiques.

En savoir plus sur BindingFlags :

Pour des informations détaillées sur l'énumération BindingFlags et ses différentes options, reportez-vous à la documentation officielle de Microsoft [insérer l'URL de la documentation ici].

Cette approche permet aux développeurs d'appeler dynamiquement des méthodes privées à partir de la même instance de classe, ouvrant ainsi des possibilités de manipulation avancée des membres de la classe au moment de l'exécution.

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