Otro enfoque sería utilizar CallerMemberNameAttribute del Sistema. Tiempo de ejecución. Espacio de nombres de servicios de compilación para llenar un parámetro opcional. Por ejemplo ...
Private Function GetMethodName(<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing) As String
Return memberName
End Function
La función se invoca como era de esperar ...
Public Sub DoSomeWork()
Dim methodName As String = GetMethodName()
Console.WriteLine($"Entered {methodName}")
' Do some work
End Sub
En lugar de 'sólo' recuperar el nombre del método, la función podría también hacer uso del método nombre recuperado para simplificar aún más el código. Por ejemplo ...
Private Sub TraceEnter(
<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing)
Console.WriteLine($"Entered {memberName}")
End Sub
... que podría ser utilizado como esto ...
Public Sub DoSomeWork()
TraceEnter()
' Do some work
End Sub
Otros atributos del espacio de nombres CompilerServices se pueden usar de forma similar para recuperar la ruta completa (por lo tiempo de compilación) del archivo de origen y/o el número de línea de la llamada. Consulte la documentación de CallerMemberNameAttribute para el código de muestra.
Mira esto: http://geekswithblogs.net/opiesblog/archive/2006/06/29/83654.aspx –
Así es como obtener el nombre del método de llamada, no el método que se está ejecutando actualmente. ¡Aún así genial! –
Posible duplicado de [¿Se puede usar la reflexión para encontrar el nombre del método que se está ejecutando actualmente?] (Http://stackoverflow.com/questions/44153/can-you-use-reflection-to-find-the-name-of -el-actualmente-método-de-ejecución) –