web-dev-qa-db-ja.com

静的メソッドで現在のクラスの名前を取得するにはどうすればよいですか?

通常、this.GetType()を呼び出すことはできますが、静的メソッドでこれにアクセスすることはできません。どうすれば確認できますか?

23
Louis Rhys
new StackFrame().GetMethod().DeclaringType

または

MethodBase.GetCurrentMethod().DeclaringType

または

new StackTrace(true).GetFrame(<frame index>).GetMethod() //e.g. <frame index> = 0
31
alexsuslin

typeofを使用します:

string className = typeof(MyClass).Name;
15
brgerner

それが最善の方法かどうかはわかりませんが、通常はprivateコンストラクターを設定し(クラスが静的/ユーティリティのインスタンス化できないクラスの場合)、GetType()を呼び出します。インスタンス上。

private MyStaticClass
{
    // ...
}


public static Type MyStaticMethiod()
{
     return new MyStaticClass().GetType();
}
0
davioooh