Обычно я могу вызвать this.GetType(), но я не могу получить доступ к этому в статическом методе. Как мы можем проверить это?
Как получить имя текущего класса в статическом методе?
Ответ 1
new StackFrame().GetMethod().DeclaringType
или
MethodBase.GetCurrentMethod().DeclaringType
или
new StackTrace(true).GetFrame(<frame index>).GetMethod() //e.g. <frame index> = 0
Ответ 2
Использовать typeof:
string className = typeof(MyClass).Name;
Ответ 3
Я не знаю, если это лучший способ сделать это, но я обычно устанавливаю конструктор private
(если мой класс является классом статического/неактивного класса) и вызывает вызов GetType()
в экземпляре.
private MyStaticClass
{
// ...
}
public static Type MyStaticMethiod()
{
return new MyStaticClass().GetType();
}