- 1. 概要
- 2. 記述
- 3. 呼び出し元
- 4. 参考サイト
1. 概要
デバッグ出力時に、出力元のファイル名や関数名を出力したくなるものです。
「C」「C++」「PHP」あたりで、「__DIR__」「__FILE__」「__FUNCTION__」「__LINE__」等のシンボルで出力しているものです。
「C#」でも、やや似たものが使用できます。
2. 記述
「namespace 名」「クラス名」「メソッド名」をそれぞれ、下記を使用することで。
GetType().Namespace
GetType().Name
System.Reflection.MethodBase.GetCurrentMethod().Name
戻り値が、「string」型になっていますので、出力できます。
メソッド名が。
<MethodName>b__0
みたいな形式でやなときは、下記の形式で出力する手もありますが、「<>」で囲まれていない場合は、こけたりしますので、ご注意。
System.Reflection.MethodBase.GetCurrentMethod().Name.Split('<', '>')[1]
3. 呼び出し元
本項の情報は、「.NET 8」で確認いたしました。
他のバージョンでは保証できません。
呼び出し元の情報を得るには、下記のような記述をします。
public void exec([CallerFilePath] string CallerFilePath = "", [CallerLineNumber] int CallerLineNumber = 0, [CallerMemberName] string CallerMemberName = "")
{
Console.WriteLine("caller → " + CallerFilePath +
" " + CallerLineNumber +
" " + new System.Diagnostics.StackFrame(1, false).GetMethod().DeclaringType.FullName +
" " + CallerMemberName);
}
こういう書き方で、左から順に、「呼び出し元ファイル名」「行番号」「クラス名」「メソッド名」を取得・出力することができます。
4. 参考サイト
本ページは、下記のサイトを参考にさせていただきました。
「C# で自身のクラス名や関数名を取得する #C」
「C# 呼び出し元のメソッド名などの情報を取得する」
|
|