2012-02-17 9 views
19

आम तौर पर मैं इसे कॉल कर सकता हूं। गेट टाइप(), लेकिन मैं इसे एक स्थिर विधि में नहीं एक्सेस कर सकता। हम इसे कैसे देख सकते हैं?एक स्थिर विधि में वर्तमान वर्ग का नाम कैसे प्राप्त करें?

+4

देखो: http://stackoverflow.com/questions/552629/c-sharp-print-the-class-name-from-within-a- स्थिर-फ़ंक्शन – k06a

उत्तर

26
new StackFrame().GetMethod().DeclaringType 

या

MethodBase.GetCurrentMethod().DeclaringType 

या

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

मैं अगर यह यह करने के लिए सबसे अच्छा तरीका है पता नहीं है, लेकिन मैं आम तौर पर (एक private निर्माता सेट करते हैं तो मेरी कक्षा एक है स्थैतिक/उपयोग गैर-तत्काल कक्षा) और उदाहरण पर GetType() पर कॉल करें।

private MyStaticClass 
{ 
    // ... 
} 


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

उपयोग typeof:

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

यह कोड काम नहीं करेगा यदि कोड किसी अन्य वर्ग –

+0

@lo पर चिपकाया गया है, लेकिन हाँ नाम बदलना सही टाइपफ स्टेटमेंट रखता है। – brgerner

+1

@lo यदि आप रीशेर्पर के * प्रतिलिपि प्रकार * द्वारा प्रतिलिपि बनाते हैं तो टाइपफ कथन को दोबारा सुधारना भी सही रहना चाहिए। – brgerner

संबंधित मुद्दे