J'ai une fonction qui ressemble un peut à ça :
1 2 3 4 5
|
public virtual void SayHello(string name)
{
byte[] code = ...
} |
Dedans, code c'est le corps d'une fonction de la même classe avec la même signature (juste le nom qui change à priori) :
1 2 3 4 5
|
public virtual void Hello(string name)
{
Console.WriteLine(String.Format("Bonjour {0} !",name));
} |
et donc code contient le code MSIL de :
Console.WriteLine(String.Format("Bonjour {0} !",name));
Donc directement du "bytecode".
Puis-je exécuter le code dans le contexte de SayHello, comme si j'avais mis la ligne "Console.WriteLine" dans SayHello ? J'ai pensé à utiliser DynamicMethod mais a priori avec on ne peut générer que des méthodes statiques (je veux pouvoir accéder à partir de mon code IL aux membres d'instances de la classe qui contient SayHello, et que la référence à This dans ce dernier soit bien la classe qui contient SayHello). J'ai regardé MethodRental aussi mais ça ne marche que sur les types générés dynamiquement. Comment puis-je alors faire ?
Partager