प्रतिबिंब का उपयोग करते समय कॉल स्टैक प्राप्त करना संभव है (इसके अलावा यह जेआईटी ऑप्टिमाइज़ेशन के कारण कच्चे सन्निकटन हो सकता है) सिस्टम.डिग्नोस्टिक्स.स्टैकट्रेस का उपयोग करके और स्टैकफ्रेम ऑब्जेक्ट्स की जांच करें।मैं स्टैकफ्रेम के लिए निष्पादन ऑब्जेक्ट कैसे प्राप्त करूं?
मैं कैसे वस्तु (इस-सूचक), जिस पर एक ढेर फ्रेम में एक विधि को क्रियान्वित कर रहा है के लिए एक संदर्भ मिल सकता है?
मुझे पता है कि मैं स्टैक फ्रेम ऑब्जेक्ट पर GetMethod() को कॉल करके विधिबेस प्राप्त कर सकता हूं, लेकिन जो मैं खोज रहा हूं वह GetObject() की रेखाओं के साथ कुछ है (जो स्वाभाविक रूप से शून्य हो जाता है यदि विधि स्थैतिक है)। ऐसा लगता है कि स्टैक फ्रेम ऑब्जेक्ट को केवल विधिवत निर्धारित जानकारी जैसे विधि जानकारी, मूल फ़ाइल इत्यादि के लिए पूछताछ की जा सकती है।
वीएस डीबगर जानता है (हालांकि यह शायद कॉल स्टैक ट्रेस प्राप्त करने की दूसरी विधि का उपयोग करता है), जैसा कि कोई भी कर सकता है कॉल स्टैक विंडो में किसी भी स्टैक फ्रेम को डबल क्लिक करें और स्थानीय और कक्षा फ़ील्ड के मानों को देखें।
संपादित करें: स्पष्ट करने के लिए: मैं वस्तु उदाहरण जिस पर विधि बुलाया गया था चाहते हैं। I.e: यदि विधि फू() को ऑब्जेक्ट इंस्टेंस पर कॉल कहा जाता है तो कॉल स्टैक पर कहीं भी, और यह उस विधि को कैस्केड करता है जो मैं स्टैक ट्रेस करता हूं, मैं ए से एक संदर्भ प्राप्त करना चाहता हूं जहां से मैं स्टैक ट्रेस करता हूं। (विधि आधार का घोषित प्रकार नहीं)
मुझे पता है कि इस सूचक को पारित कर दिया है फोन करने वाले है, जिसके कारण अस्तित्वहीन GetObject() अशक्त वापसी होगी तो वह एक स्थिर विधि थी, और एक उदाहरण विधि में विहित 'इस' सूचक की एक प्रति द्वारा कॉल स्टैक पर विधि कहा जाता है। हालांकि, मैं आपके # 1 तर्क से सहमत हूं, सिवाय इसके कि ऑब्जेक्ट तक पहुंच आसानी से डिज़ाइन द्वारा उचित अनुमति की आवश्यकता हो सकती है। –
वास्तविक समस्या यह है कि एक स्टैकफ्रेम आपके कोड के बारे में कुछ मेटाडेटा है, यह आपके कोड का लाइव संस्करण नहीं है। – Yona
जैसा कि मुझे डर था। लेकिन मुझे उम्मीद थी कि कुछ अन्य वर्गों का लाभ उठाने के लिए। –