Est-ce quelque chose comme cela possible?L'utilisation de la propriété MethodInfo Method à partir d'une action <T> delegate dans il.EmitCall
//
// create a delegate
Action<Type> action = (t) => t.DoSomething;
//
// get the IL generator for a method
ILGenerator il = myMethodBuilder.GetILGenerator();
//
// try and call the delegate
il.EmitCall(OpCodes.Callvirt, action.Method, null);
Je reçois une exception MethodAccessException chaque fois que j'essaie d'appeler la méthode.
Merci
Je peux voir le MethodInfo IsPrivate est vrai, est-il un moyen de changer cela? Sinon, je peux juste utiliser un membre public statique, mais son plus propre avec un Lambda :) Merci –
Il n'y a aucun moyen de changer cela; C'est un détail d'implémentation du compilateur C# –
En y réfléchissant davantage, votre meilleure option pourrait être de trouver un moyen de transmettre le délégué 'action' dans votre méthode générée, soit en ajoutant un paramètre, soit en faisant de votre méthode générée une instance de classe membre et en définissant un champ sur cette classe. Parce que vous appelez votre lambda via un délégué, vous ne serez pas sensible à la façon dont ce lambda est implémenté. –