Un altro approccio sarebbe quello di utilizzare CallerMemberNameAttribute dal System. Runtime Spazio dei nomi del Compiler Services per popolare un parametro facoltativo. Per esempio ...
Private Function GetMethodName(<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing) As String
Return memberName
End Function
La funzione sarebbe invocata come ci si aspetterebbe ...
Public Sub DoSomeWork()
Dim methodName As String = GetMethodName()
Console.WriteLine($"Entered {methodName}")
' Do some work
End Sub
Piuttosto che 'solo' recuperare il nome del metodo, la funzione potrebbe anche fare uso del metodo nome recuperato per semplificare ulteriormente il codice. Per esempio ...
Private Sub TraceEnter(
<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing)
Console.WriteLine($"Entered {memberName}")
End Sub
... che potrebbe essere utilizzato come questo ...
Public Sub DoSomeWork()
TraceEnter()
' Do some work
End Sub
Altri attributi nello spazio dei nomi CompilerServices possono essere utilizzati in modo simile per recuperare il percorso completo (a compile time) del file sorgente e/o il numero di riga della chiamata. Vedere la documentazione CallerMemberNameAttribute per il codice di esempio.
fonte
2017-06-04 06:33:36
Verificare questo: http://geekswithblogs.net/opiesblog/archive/2006/06/29/83654.aspx –
Questo è in realtà come ottenere il nome del metodo di chiamata, non il metodo attualmente in esecuzione. Ancora fico, però! –
Possibile duplicato di [È possibile utilizzare la riflessione per trovare il nome del metodo attualmente in esecuzione?] (Http://stackoverflow.com/questions/44153/can-you-use-reflection-to-find-the-name-of -il metodo-attualmente in esecuzione) –