DOBON.NET DOBON.NETプログラミング掲示板過去ログ

関数名の取得

分類:[.NET]

お世話になっております。

Win、C#について質問があります。
Title通り、自身の関数名を取得することは出来ますか?

その関数内で行えば自身の関数名を取得するような感じです。

ご存知のおられましたら回答宜しくお願いします。
じゃんぬねっと です。

■No9236に返信(たかさんの記事)
> Win、C#について質問があります。
> Title通り、自身の関数名を取得することは出来ますか?
> その関数内で行えば自身の関数名を取得するような感じです。

C マクロで言う「__FILE__」「__LINE__」が欲しいのですよね?
トレースか何かで必要なのでしょうか?

StackTrace だったら、デバッグ ビルドでないと無理だと思います。(多分)
早速の返信ありがとうございます。

C マクロとかはやったことがないので分かりませんが、

AAAという関数内で実行すればAAAと帰ってきて
BBBという関数内で実行すればBBBと帰ってきて・・という感じです。

説明不足で申し訳ございません。

上記が必要な理由はエラーが発生した場合どこの関数で発生したかを取得しております。

が、漏れが出てきそうなので自信の関数名を取得できれば便利だなと思ったのです。
こんにちは、じゃんぬねっと です。

■No9239に返信(たかさんの記事)
> C マクロとかはやったことがないので分かりませんが、
> AAAという関数内で実行すればAAAと帰ってきて
> BBBという関数内で実行すればBBBと帰ってきて・・という感じです。
> 説明不足で申し訳ございません。

いえいえ、私が勝手に話を発展させていたようです。
申し訳ありません。m(_ _)m

> 上記が必要な理由はエラーが発生した場合どこの関数で発生したかを取得しております。
> が、漏れが出てきそうなので自信の関数名を取得できれば便利だなと思ったのです。

先に書いたように、StackTrace を使う方法があります。

  System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
  MessageBox.Show(st.ToString());



--------------------------------------------
 @Remarks    じゃんぬねっと
 @Homepage  http://jeanne.wankuma.com/
 @Blog        http://www.ailight.jp/blog/jeanne/
--------------------------------------------
ホイ

StackTrace st = new StackTrace();
StringBuilder sb = new StringBuilder();
for ( int LoopCounter =0; LoopCounter < st.FrameCount; LoopCounter++ )
{
    StackFrame sf = st.GetFrame(LoopCounter);
    sb.Append(sf.GetMethod().ToString() );
    sb.Append("\n" );
}

MessageBox.Show(sb.ToString());
  • 題名: Re[1]: 関数名の取得
  • 著者: たか
  • 日時: 2005/02/18 17:23:31
  • ID: 9243
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
じゃんぬねっと様、中様、ありがとうございました。

これで楽になりそうです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板