2012-02-17 97 views

回答

26
new StackFrame().GetMethod().DeclaringType 

MethodBase.GetCurrentMethod().DeclaringType 

new StackTrace(true).GetFrame(<frame index>).GetMethod() //e.g. <frame index> = 0 
0

我不知道这是否是做的最好的方式,但我通常可以设置一个private构造函数(如果我的课是static/util不可实例化的类),并且在实例上调用GetType()

private MyStaticClass 
{ 
    // ... 
} 


public static Type MyStaticMethiod() 
{ 
    return new MyStaticClass().GetType(); 
} 
13

使用的typeof

string className = typeof(MyClass).Name; 
+1

如果代码被粘贴到另一个类中,这个函数将不起作用 – 2012-02-17 10:47:27

+0

@lo是但重命名类保留正确的typeof语句。 – brgerner 2012-02-17 11:41:17

+1

@lo如果您通过ReSharper的* Copy Type *重构类,则typeof语句也应该保持正确。 – brgerner 2012-02-17 12:15:59

相关问题