以下のような感じで、呼び出し元メソッド名の取得が出来るようです。ログ記録に便利かも。
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