How to get the name of class where an object is initialized c# -


मेरे पास कुछ कक्षाएं हैं I कहते हैं:

  सार्वजनिक वर्ग ए {सार्वजनिक शून्य कुछ एक्शन () {Debug.Write ("मुझे कक्षा में घोषित किया गया था: और मेरा नाम है:"); }}  

और

  सार्वजनिक वर्ग बी {सार्वजनिक स्थिर एक MyClass = new A (); } सार्वजनिक वर्ग सी {सार्वजनिक स्थिर एक myClass = नया ए (); } सार्वजनिक वर्ग डी {सार्वजनिक स्थिर एक myClass = नया ए (); }  

कक्षा ए में मैं कुछ "एक्शन" चाहता हूं, यह प्रिंट करना है कि किस कक्षा को इसे आरंभ किया गया था।

उदाहरण के लिए, C.myClass.SomeAction (); यह प्रिंट होगा "मुझे कक्षा C में नामित किया गया था मेरा नाम myClass "

< पी> मुझे आशा है कि यह समझदारी है।

यह करने के कारण ये है स्वचालित परीक्षण के दौरान डीबगिंग। मैं समझता हूं कि यह काम करने का सबसे अच्छा तरीका नहीं है, लेकिन यह व्यवसाय की एक आवश्यकता है।

यह आवश्यकताएं विरासत के बिना संतुष्ट हो या वस्तु को पारित करना; हम उस वर्ग का नाम प्राप्त कर सकते हैं जो रचनाकार को स्टैक की जांच करके निर्माता के शरीर के भीतर से कॉल करता है।

  सार्वजनिक वर्ग A {निजी स्ट्रिंग _created By; सार्वजनिक शून्य कुछएक्शन () {Console.WriteLine ("मुझे वर्ग [[0}]", _createdBy में घोषित किया गया था; } सार्वजनिक ए () {var stackFrame = नया स्टैकफ़्रेम (1); Var विधि = stackFrame.GetMethod (); _createdBy = method.DeclaringType.Name; }}  

प्रदर्शन के संदर्भ में, मैं मान रहा हूँ कि आप इन वस्तुओं के कई उदाहरण नहीं बना रहे हैं। आप इस पर भी यह सोच सकते हैं कि क्या आप दुबारा निर्माण कर रहे हैं या किसी अन्य सेटिंग पर, ताकि यह सामान पूरी तरह से आपके उत्पादन निष्पादनयोग्य में छोड़ा जा सके।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

asp.net mvc - How to attach sql database to a javascript graph -

c# - How to know the number of Threads created and limit the Tasks accordingly -