C#における、実行中のクラス・メソッド・行番号を取得する方法です。
デバッグで必要な情報なので、実行ログファイルへの書き出しなどで利用することが多いです。ログファイル書き出しも合わせて解説します。
実行中のクラス・メソッド・行番号を取得する方法
実行中のクラス・メソッド・行番号は、デバッグやユーザーからの問い合わせの際に必須となる情報です。
また、それらをログファイルに書き出しておくと、調査の時間が短縮されます。
サンプル様に簡単な画面を用意しました。

ボタンが4つあります。各ボタンは、
- クラス名取得ボタン:クラス名を表示
 - メソッド名取得ボタン:メソッド名を表示
 - 行番号取得ボタン:行番号を表示
 - ログ書き出しボタン:クラス名・メソッド名・行番号をログファイルに書き出し
 
という仕様です。それぞれサンプルコードを紹介します。
実行中のクラス名を取得
実行中のクラス名を取得する場合、ObjectクラスのGetTypeメソッド使ってTypeオブジェクトを取得し、Nameプロパティを参照するとクラス名が取得できます。
namespace CS_Get_APP_Info
{
    public partial class Form_CS_Get_APP_Info : Form
    {
        public Form_CS_Get_APP_Info()
        {
            InitializeComponent();
        }
        private void cmdGetClass_Click(object sender, EventArgs e)
        {
            //クラス名取得
            string strMsg = GetType().Name + " を実行中。";
            //メッセージボックスでクラス名を表示
            MessageBox.Show(strMsg
                            , "情報"
                            , MessageBoxButtons.OK
                            , MessageBoxIcon.Information);
        }
    }
}
実際に実行してみましょう。

クラス名がメッセージボックスに表示されました。
実行中のメソッド名を取得
実行中のメソッド名を取得する場合は、MethodBaseクラスのGetCurrentMethodメソッドを使用すると、メソッド名が取得できます。
namespace CS_Get_APP_Info
{
    public partial class Form_CS_Get_APP_Info : Form
    {
        public Form_CS_Get_APP_Info()
        {
            InitializeComponent();
        }
        private void cmdGetMethod_Click(object sender, EventArgs e)
        {
            //メソッド名取得
            string strMsg = System.Reflection.MethodBase.GetCurrentMethod().Name + " を実行中。";
            //メッセージボックスでクラス名を表示
            MessageBox.Show(strMsg
                            , "情報"
                            , MessageBoxButtons.OK
                            , MessageBoxIcon.Information);
        }
    }
}
実際に実行してみます。

メソッド名がメッセージボックスに表示されました。
行番号を取得
今まさに実行しているプログラムソースの行番号を取得する場合、CallerLineNumberAttribute クラスを使用します。
namespace CS_Get_APP_Info
{
    public partial class Form_CS_Get_APP_Info : Form
    {
        public Form_CS_Get_APP_Info()
        {
            InitializeComponent();
        }
        private void cmdGetNumber_Click(object sender, EventArgs e)
        {
            //ファイルの行番号取得           
            string strMsg = GetLineNumber().ToString() + " 行目。";    //この行(サンプルでは50行目)が表示される
            //メッセージボックスで行番号を表示
            MessageBox.Show(strMsg
                            , "情報"
                            , MessageBoxButtons.OK
                            , MessageBoxIcon.Information);
        }
        //行番号取得用メソッド
        private int GetLineNumber([CallerLineNumber] int intLineNumber = 0)
        {
            return intLineNumber;
        }
    }
}
上記ソースコードでは、GetLineNumberメソッドを作成していますので、同じようにコピペして作成してみて下さい。
実行してみましょう。

行番号が取得できています。
実行中のクラス名・メソッド名・行番号をログファイル出力する
さて、実行中のクラス名・メソッド名・行番号の取得方法が分かったので、実際にログファイルに書き出してみましょう。
//行番号取得のため追加
using System.Runtime.CompilerServices;
namespace CS_Get_APP_Info
{
    public partial class Form_CS_Get_APP_Info : Form
    {
        public Form_CS_Get_APP_Info()
        {
            InitializeComponent();
        }
        //ログに書き出すサンプル
        private void cmdOutPutLog_Click(object sender, EventArgs e)
        {
            //クラス名取得
            string strMsgClass = GetType().Name;
            //メソッド名取得
            string strMsgMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;
            //ファイルの行番号取得
            string strMsgNum = GetLineNumber().ToString();
            //ログファイル書き出し用文字列を作成
            string strLog = "クラス名:" + strMsgClass + " "
                          + "メソッド名:" + strMsgMethod + " "
                          + "行番号" + strMsgNum
                          + Environment.NewLine;                    //見た目のため改行コード挿入
            //D:\CS\Log_OutPut\EventLog.log
            System.IO.StreamWriter objSW = new System.IO.StreamWriter(
                @"D:\CS\Log_OutPut\EventLog.log"
                , true
                , System.Text.Encoding.GetEncoding("shift_jis"));
            //書き込み
            DateTime objDT = DateTime.Now;
            objSW.Write(objDT.ToString("yyyy/MM/dd HH:mm:ss:fff") + " " + strLog);
            objSW.Close();
        }
        //行番号取得用メソッド
        private int GetLineNumber([CallerLineNumber] int intLineNumber = 0)
        {
            return intLineNumber;
        }
    }
}
実際に実行してログファイルを確認してみます。何度か出力してみました。

ログファイル書き出しまで出来れば、基本的な実行ログは取得できます。
参考サイト
Type.GetType メソッド (System) | Microsoft Docs
MethodBase.GetCurrentMethod メソッド (System.Reflection) | Microsoft Docs
CallerLineNumberAttribute クラス (System.Runtime.CompilerServices) | Microsoft Docs
.
 
