So-net無料ブログ作成
検索選択

呼び出し元の情報を取得 [プログラミング]

Visual Basic .NETでの話ですが、
関数の中で、その関数を呼び出している箇所のファイル名と行番号を取得する必要が出てきました。

Public Sub baseFunc()
    targetFunc()    ' (1)
End Sub

Public Sub targetFunc()
    ' (2)
End Sub

(2)の箇所で、(1)についての情報が欲しいのです。
引数とか使わずに。

ぶっちゃけ、そんな機能(クラス)が用意されていました。

Public Sub targetFunc()

    Dim info As New StackFrame(1, True)

    MsgBox("呼び出し元 ファイル名 = " & info.GetFileName())
    MsgBox("呼び出し元 行番号     = " & info.GetFileLineNumber())

    MsgBox("呼び出し元 クラス     = " & info.GetMethod().DeclaringType.Name)
    MsgBox("呼び出し元 メソッド   = " & info.GetMethod().Name)

End Sub

StackFrame のコンストラクタに指定している 1 は、どのくらい呼び出し元を遡るかを表しています。
1 は直接の呼び出し元、2 にすると呼び出し元の呼び出し元…という様に。
0 は、インスタンスを作成している正にその場所の情報を表します。

StackFrame のコンストラクタに指定している True は、True にしないと、ファイル名と行番号が取得できません。
クラス名しか必要ない様な場合は、False にしたら、ちょっとは処理が軽くなるのではないだろうか……。

ちなみに、これを True にしていても、Releaseモードでビルドしたら、ファイル名と行番号は取得できません。

[船] 今日の一冊
オール ミッション2

オール ミッション2

  • 作者: 山田 悠介
  • 出版社/メーカー: 角川グループパブリッシング
  • 発売日: 2008/08/29
  • メディア: 単行本

タグ:.net VB.NET
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。