2010-08-10 4 views
0

J'ai la nécessité de récupérer le corps de la méthode à partir d'un fichier .dll en C#. J'utilise System.Reflection pour récupérer les noms de méthodes, les paramètres et les propriétés etc. mais je n'ai pas trouvé le moyen de récupérer le corps de la méthode.Peut-on récupérer le corps de la méthode à partir du fichier .dll?

S'il vous plaît me suggérer une idée un peu ... :-)

+1

Que voulez-vous faire exactement? Pourquoi avez-vous besoin du corps de la méthode? – Burt

+0

En fait je travaille pour suivre les changements qui sont faits dans les versions précédentes de .dll –

+0

Donc je dois obtenir le corps de la méthode où le changement s'est produit –

Répondre

1

Vous pouvez utiliser un outil d'ingénierie inverse comme Reflector. (Attention, cela peut être illégal, selon la situation.)

Aussi, je ne suis pas sûr que ce soit une bonne réponse à la partie "in C# .Net" de votre question, car il s'agit d'un outil externe , pas quelque chose que vous pouvez facilement faire vous-même à partir de votre propre code C#. Pour cela, vous aurez besoin d'interpréter l'IL vous pouvez obtenir par la réflexion (voir Jon Skeets answer) vous

+0

Je ne veux tout simplement pas utiliser Reflector –

2

Eh bien, vous pouvez récupérer le corps de la méthode en utilisant MethodBase.GetMethodBody(), qui vous obtient l'IL crue, les variables locales, etc.

De toute évidence, vous devez d'abord charger l'assemblage (par exemple avec Assembly.Load), puis obtenir le type approprié (Assembly.GetType), puis trouver la méthode (Type.GetMethod), puis obtenir le corps de la méthode.

Questions connexes