C# - デバッグ - クラス・メソッド名称


 クラウディア


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# 呼び出し元のメソッド名などの情報を取得する