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

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

Попробуй это:

 this.GetType().Name 

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

 typeof(MyProgram).Name 

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

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

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

 nameof(MyProgram) 

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

 this.GetType().BaseType.Name 

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

 protected string GetThisClassName() { return this.GetType().Name; } 

Затем вы можете получить имя в производном classе. Возвращает имя производного classа. Конечно, при использовании нового ключевого слова «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(); } } 

Использовать это

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

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

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

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

 GetType().Name 
  • Как получить общий тип во время выполнения?
  • Установка свойства путем отражения со строковым значением
  • Почему GetType возвращает System.Int32 вместо Nullable ?
  • Как использовать reflection для вызова частного метода?
  • Получение всех типов в пространстве имен посредством отражения
  • Как ограничить setAccessible только «законным» использованием?
  • Отражение Java: как я могу получить анонимные внутренние classы?
  • Вызов методов с необязательными параметрами посредством отражения
  • Как вы можете получить имена параметров метода?
  • Найти методы, которые имеют настраиваемый атрибут с использованием отражения
  • Вызов универсального метода с аргументом типа, известным только во время выполнения
  • Давайте будем гением компьютера.