현재 메서드의 이름을 가져옵니다.
이것은 다소 어리석은 질문이지만, 그 방법 내에서 현재 실행되고 있는 방법의 이름을 얻을 수 있습니까?
Public Sub SomeMethod()
Dim methodName as String = System.Reflection.[function to get the current method name here?]
End Sub
감사해요.
System.Reflection.MethodInfo.GetCurrentMethod();
다른 메소드는 요청된 것과 비슷하지만 문자열 값을 반환하지 않습니다.하지만 다음과 같은 이점이 있습니다.
Dim methodName$ = System.Reflection.MethodBase.GetCurrentMethod().Name
이 질문에 제시된 답변이 실제로 효과가 있는지 확인하기 위해 (System.Reflection.MethodBase.GetCurrentMethod().Name
런타임에 속성을 추가해야 합니다.이 방법을 깨는 컴파일러/런타임 플래그는 없습니다.
- F#
[<System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)>]
VB:
<System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)>
C#:
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
또한, 요즘에는 VB, C#(그리고 아마도 곧 F#)에 연산자가 있는데, 당신의 경우에는 다음과 같습니다.nameof(SomeMethod)
(여기서는 VB와 C#에 대한 구문이 동일할 것으로 생각합니다.)
또 다른 방법은 시스템에서 CallerMemberNameAttribute를 사용하는 것입니다.런타임.선택적 매개 변수를 채울 컴파일러 서비스 네임스페이스입니다.예를 들어...
Private Function GetMethodName(<System.Runtime.CompilerServices.CallerMemberName>
Optional memberName As String = Nothing) As String
Return memberName
End Function
예상대로 함수가 호출됩니다.
Public Sub DoSomeWork()
Dim methodName As String = GetMethodName()
Console.WriteLine($"Entered {methodName}")
' Do some work
End Sub
함수는 메서드 이름을 '그냥' 검색하는 대신 검색된 메서드 이름을 사용하여 코드를 더욱 단순화할 수도 있습니다.예를 들면...
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
컴파일러 서비스 네임스페이스의 다른 속성을 유사한 방식으로 사용하여 소스 파일의 전체 경로 및/또는 호출의 회선 번호를 검색할 수 있습니다.샘플 코드는 CallerMemberNameAttribute 설명서를 참조하십시오.
Dim methodName As String = System.Reflection.MethodBase.GetCurrentMethod().Name
언급URL : https://stackoverflow.com/questions/2051217/get-the-name-of-the-current-method
'programing' 카테고리의 다른 글
AttributeError: 부분적으로 초기화된 모듈을 수정하는 방법? (0) | 2023.05.08 |
---|---|
C# 유닛 테스트 시 "내부" 액세스 한정자 (0) | 2023.05.08 |
UIScrollView를 콘텐츠에 맞게 자동 크기 조정하는 방법 (0) | 2023.05.08 |
문자열이 0이고 비어 있는지 확인합니다. (0) | 2023.05.08 |
MongoDB - 중첩 배열의 개체 업데이트 (0) | 2023.05.08 |