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

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

9 Solutions collect form web for “C # получает собственное имя classа”

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

 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 
  • Правильный способ загрузки сборки, поиска метода вызова и вызова ()
  • Как программно компилировать и создавать экземпляр classа Java?
  • Любой способ вызвать частный метод?
  • Разрешить тип от имени classа в другой сборке
  • Reflection - получить имя атрибута и значение свойства
  • Почему C ++ не имеет отражения?
  • Можно ли создать экземпляр вложенного classа с помощью Java Reflection?
  • Проверьте, является ли class производным от общего classа
  • Отражение. Получение общих параметров из экземпляра System.Type.
  • Как использовать reflection для вызова общего метода?
  • Насколько дорого стоит .NET-reflection?
  • Давайте будем гением компьютера.