С# получает собственное имя класса

Если у меня есть класс с именем MyProgram, существует ли способ извлечения "MyProgram" в виде строки?

Ответ 1

Попробуйте следующее:

this.GetType().Name

Ответ 2

Я хотел бросить это для хорошей меры. Я думаю, что путь @micahtan опубликован предпочтительнее.

typeof(MyProgram).Name

Ответ 3

В С# 6.0 вы можете использовать оператор nameof :

nameof(MyProgram)

Ответ 4

Несмотря на то, что ответ micahtan хорош, он не будет работать в статическом методе. Если вы хотите получить имя текущего типа, это должно работать везде:

string className = MethodBase.GetCurrentMethod().DeclaringType.Name;

Ответ 5

Для справки, если у вас есть тип, который наследуется от другого, вы также можете использовать

this.GetType().BaseType.Name

Ответ 6

Если вам нужно это в производных классах, вы можете поместить этот код в базовый класс:

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();
    }
}

Ответ 7

Используйте это

Допустим, приложение Test.exe работает и функция foo() в form1 [в основном это класс 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 );

}

Ответ 8

this можно опустить. Все, что вам нужно, чтобы получить текущее имя класса:

GetType().Name

Ответ 9

Получить текущее имя класса Asp.net

string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString();