başka bir yaklaşım kullanmak olacaktır System. Runtime'dan CallerMemberNameAttribute. İsteğe bağlı bir parametre yerleştirmek için Compiler Services ad alanı. Örneğin ...
Private Function GetMethodName(<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing) As String
Return memberName
End Function
beklediğiniz gibi işlev çağrılır olacağını
...
Public Sub DoSomeWork()
Dim methodName As String = GetMethodName()
Console.WriteLine($"Entered {methodName}")
' Do some work
End Sub
yerine
'sadece' yöntemi adı alınıyor, fonksiyon aynı zamanda yöntemin yararı sağlayabilir Kodu daha da basitleştirmek için ad alındı. Örneğin ... Böyle kullanılabilecek
Private Sub TraceEnter(
<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing)
Console.WriteLine($"Entered {memberName}")
End Sub
... ...
Public Sub DoSomeWork()
TraceEnter()
' Do some work
End Sub
CompilerServices ad
diğer özellikler de (tam yolu almak için benzer şekilde kullanılabilir kaynak dosyanın ve/veya aramanın satır numarasının derlenmesi). Örnek kod için CallerMemberNameAttribute belgelerine bakın.
Şuna bakın: http://geekswithblogs.net/opiesblog/archive/2006/06/29/83654.aspx –
Gerçekte, şu anda yürütülen yöntem değil, çağrı yönteminin adı nasıl alınır. Yine de havalı! –
Olası çoğaltması [Şu anda yürütülen yöntemin adını bulmak için yansıma kullanabilir misiniz?] (Http://stackoverflow.com/questions/44153/can-you-use-reflection-to-find-the-name-of –