[VB.NET] 呼び出し元メソッド名の取得

2010年10月1日

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

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 吐くのは知っていたから、やればできるんだろうなあと思ってはいましたが、こんなにあっさり出来るとは…






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

1 Comment to "[VB.NET] 呼び出し元メソッド名の取得"

  1. オールトの雲

     トラックバックしそこねてたのでコメント。
      http://ooltcloud.sakura.ne.jp/blog/201007/article_30011218.html

     とりあえずマクロでしようとしてたことはできるようになった。

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org