2012-02-17 67 views

Trả lời

26
new StackFrame().GetMethod().DeclaringType 

hoặc

MethodBase.GetCurrentMethod().DeclaringType 

hoặc

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

Tôi không biết nếu đó là cách tốt nhất để làm điều đó, nhưng tôi thường được thiết lập một constructor private (nếu lớp học của tôi là một lớp tĩnh/util không instantiable) và hơn gọi GetType() trên một cá thể.

private MyStaticClass 
{ 
    // ... 
} 


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

Sử dụng typeof:

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

cái này sẽ không hoạt động nếu mã được dán vào một lớp khác –

+0

@lo Có nhưng đổi tên lớp giữ đúng tuyên bố typeof. – brgerner

+1

@lo Nếu bạn sao chép lớp của ReSharper * Copy Type *, hãy tái cấu trúc câu lệnh typeof cũng vẫn đúng. – brgerner

Các vấn đề liên quan