Если у меня есть класс с именем 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();