以下のような感じで、呼び出し元メソッド名の取得が出来るようです。ログ記録に便利かも。
Public Shared Function GetMethodName(ByVal i As MethodLocation)
Dim st As New StackTrace
Dim className As String = st.GetFrame(i).GetMethod.ReflectedType.Name
Dim methodName As String = st.GetFrame(i).GetMethod.Name
Dim location As String = String.Format("{0}.{1}", className, methodName)
Return (location)
End Function
Public Enum MethodLocation
ThisMethod = 1
CallerMethod = 2
End Enum
使い方は以下
Module Module1
Sub Main()
SubRoutine()
End Sub
Sub SubRoutine()
Console.WriteLine(GetMethodName(MethodLocation.ThisMethod))
Console.WriteLine(GetMethodName(MethodLocation.CallerMethod))
End Sub
End Module
結果はこんな感じ
Module1.SubRoutine Module1.Main
Exception で StackTrace 吐くのは知っていたから、やればできるんだろうなあと思ってはいましたが、こんなにあっさり出来るとは…
オールトの雲
トラックバックしそこねてたのでコメント。
http://ooltcloud.sakura.ne.jp/blog/201007/article_30011218.html
とりあえずマクロでしようとしてたことはできるようになった。
Link | 2010年10月7日 22:22