Question

Je dois appeler une méthode sur un objet, mais je ne connais pas le nom de la méthode jusqu'à l'exécution.

Quelles sont les techniques disponibles?

(par exemple. GetMethod (). Invoke (), les délégués, c # 4.0 dynamique)

Merci!

Était-ce utile?

La solution

Le C # 4.0 fonctionnalité dynamic va être la meilleure façon de le faire. Dans un sens très réel, dynamic est « juste un wrapper » autour de la réflexion. Il est très bon emballage, cependant, qui est probablement la meilleure option.

D'autres façons, dans le niveau environ de plus en plus difficile:

  • En utilisant une réflexion tiers bibliothèque. Je ne sais pas ce qui est là-bas ces jours-ci.
  • La rédaction de votre propre Code de réflexion.
  • Utilisez le CodeDOM à créer un code qui appelle la méthode voulez appeler.
  • Emit IL qui fait à peu près la même chose que la code généré CodeDOM.
  • Créer C # le code source que vous compilez ensuite dans un ensemble que vous pouvez appeler, qui appelle à son tour le désire méthode.

Les trois derniers ne sont pas pour les faibles de cœur. Votre meilleur pari est d'utiliser dynamic ou écrire votre propre code de réflexion. Si je l'avais eu dynamic il y a trois ans quand je l'écriture de code pour quelque chose de semblable, je l'ai utilisé.

Autres conseils

Vous pouvez utiliser la réflexion pour les fonctions d'appel que vous ne connaissez pas le nom de jusqu'à l'exécution. Voici quelques doc:

http://msdn.microsoft.com/ fr-fr / bibliothèque / f7ykdhsy% 28VS.80% 29.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top