MyProgram
というクラスがある場合、 "MyProgram"を文字列として取得する方法はありますか?
これを試して:
this.GetType().Name
私はこれを念のためにスローしたいと思いました。 @micahtanの投稿方法が望ましいと思います。
typeof(MyProgram).Name
C#6.0では、 nameof
演算子を使用できます。
nameof(MyProgram)
Micahtanの答えはいいのですが、静的な方法ではうまくいきません。現在の型の名前を取得したい場合は、これはどこでも動作するはずです。
string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
参考のために、もしあなたが他から継承する型を持っていればあなたも使うことができます
this.GetType().BaseType.Name
派生クラスでこれが必要な場合は、そのコードを基本クラスに入れることができます。
protected string GetThisClassName() { return this.GetType().Name; }
それから、派生クラスで名前に到達することができます。派生クラス名を返します。もちろん、新しいキーワード "nameof"を使うとき、このような多様な行為のような必要性はないでしょう。
それ以外にも、これを定義することができます。
public static class Extension
{
public static string NameOf(this object o)
{
return o.GetType().Name;
}
}
そして、このように使います:
public class MyProgram
{
string thisClassName;
public MyProgram()
{
this.thisClassName = this.NameOf();
}
}
これを使って
ApplicationTest.exeが実行されていて、機能がfoo()であるとします。 inform1[基本的にはclass form1]です。それで、上記のコードは以下のレスポンスを生成します。
string s1 = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;
これは戻ります。
s1 = "TEST.form1"
関数名の場合:
string s1 = System.Reflection.MethodBase.GetCurrentMethod().Name;
戻ります
s1 = foo
これを例外的に使用したい場合は注意してください。
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace );
}
MyProgramは型なので、実行できます
typeof(MyProgram).Name
Asp.netの現在のクラス名を取得
string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString();
this
は省略することができます。現在のクラス名を取得するために必要なのは、
GetType().Name