呼び出し元の情報を取得 [プログラミング]
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モードでビルドしたら、ファイル名と行番号は取得できません。
今日の一冊 | |
|
2009-12-21 07:42
nice!(0)
コメント(0)
トラックバック(0)
コメント 0