2010-12-14 3 views
0

Je dois appeler une méthode sur un objet mais je ne connais pas le nom de la méthode avant l'exécution.Quelles sont les différentes manières d'appeler une méthode lors de l'exécution?

Quelles sont les techniques disponibles?

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

Merci!

+5

Vous savez déjà ce qu'il faut. Essayez de réduire un peu la portée de votre question pour ne pas avoir à écrire un livre à ce sujet. –

+0

@Hans: merci, malheureusement, je ne connais pas toutes les options. Après avoir posté cette question, j'ai trouvé que je pouvais aussi émettre IL. Au minimum, j'espère une liste de techniques pour des recherches plus poussées. Merci. –

Répondre

2

C# 4.0 dynamic fonctionnalité va être la meilleure façon de le faire. Dans un sens très réel, dynamic est "juste un emballage" autour de la réflexion. C'est un très bon emballage, cependant, c'est probablement votre meilleure option.

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

  • Utilisation d'une réflexion bibliothèque tiers. Je ne sais pas ce qui est là-bas ces jours-ci.
  • Écrire le vôtre Code de réflexion.
  • Utilisez le CodeDOM pour créer un code qui appelle la méthode que vous souhaitez appeler.
  • Emit IL qui fait à peu près la même chose que le code généré par CodeDOM .
  • Créer C# code source que vous compilez ensuite dans un ensemble que vous pouvez appeler, qui appelle à son tour la méthode souhaitée.

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 j'avais eu dynamic il y a trois ans quand j'écrivais du code pour quelque chose de similaire, je l'aurais utilisé.

Questions connexes