J'ai une fonction qui prend un Func en paramètre, l'invoque et affiche des résultats. À des fins de journalisation, il serait intéressant de pouvoir accéder au nom de la fonction qui est appelée lorsque l'expression lambda est exécutée. Y a-t-il un moyen de le faire dans un cadre compact?Obtenir le nom de la méthode d'un délégué passé en paramètre (Compact Framework)
Private Function tryWithLogging(ByVal moveFunc As Func(Of Boolean)) As Boolean
Try
moveFunc.Invoke()
Dim nameOfMethod as String = '??????
Console.WriteLine("Invoked " & nameOfMethod)
Catch ex As Exception
End Try
End Function
Exemple d'utilisation:
tryWithLogging(Function() myFunction([arbitrary params])
'desired output: "Invoked myFunction"
Voici ce que j'ai essayé de récupérer le nom:
moveFunc.Method.Name 'returns whatever the compiler decided to name the lambda
New StackTrace().GetFrame(1).GetMethod().Name 'works, but is not available on CF
J'ai aussi essayé passer un Expression(Of Func(Of Boolean))
au lieu et d'obtenir le nom de cela, mais System.Linq.Expressions
n'est pas disponible sur CF.
Existe-t-il un moyen de récupérer le nom d'une fonction invoquée par un lambda dans les chaînes de la structure compacte 3.5?
Quelque chose comme ça? https://stackoverflow.com/questions/12098267/how-can-i-get-the-name-of-the-calling-function-in-c?noredirect=1&lq=1 –
@LB peut-être que je me méprends sur votre lien , mais je ne pense pas que 'CallerMemberName' m'aidera. Je veux le nom de la méthode _being_ invoquée dans le lambda, pas le nom de la fonction faisant l'invocation. – Cobalt