3

こんにちは私はメソッドを呼び出すメソッドの名前を取得するメソッドを持っています:

    public static string GetMethodName()
    {
        System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(); 
        return trace.GetFrame(1).GetMethod().Name;
    }

そして、バグと例外を追跡するとき、私は常にメソッド名.ctorを取得します。それを回避する方法、または少なくともClassName <.ctor>のようなものを取得しますか?

4

1 に答える 1

2

どうですか:

StackTrace stackTrace = new StackTrace();
foreach(StackFrame sf in stackTrace.GetFrames())
{
   if (!sf.GetMethod().Name.StartsWith("."))    // skip all the ".ctor" methods
   {
       return sf.GetMethod().DeclaringType.Name + "." + sf.GetMethod().Name;
   }
}
return "??"; // What do you want here?

文字列比較の使用は少し手間がかかりますが、機能します:)

于 2011-07-11T18:36:45.490 に答える