2009-06-18 8 views
7

मैं कुछ ढांचे कोड (System.AppDomain.GetDynamicDir विधि) जांच कर रहा था और यह सब कोडांतरक से पता चला था: क्या होता हैMethodImplAttribute .NET में कैसे काम करता है?

[MethodImpl(MethodImplOptions.InternalCall)] 
private extern string GetDynamicDir(); 

क्या जब इस विधि कहा जाता है? मेरा मतलब यह विशिष्ट विधि नहीं है, लेकिन सामान्य रूप से इस विशेषता के साथ विधियां।

उत्तर

10

MSDN से:

MethodImplOptions.InternalCall: एक आंतरिक कॉल निर्दिष्ट करता है। एक आंतरिक कॉल विधि पर कॉल है जिसे सामान्य भाषा रनटाइम के भीतर लागू किया गया है।

तो मूल रूप से, सीएलआर इस विधि (जो शायद मूल कोड में है) का अपना कार्यान्वयन प्रदान करता है, यही कारण है कि आप इसे डिस्सेबलर में नहीं देख सकते हैं।

+0

मुझे यहां विधियां मिलीं: http://www.koders.com/cpp/fid006DC4C11F458707221DA6ED2ED9CC3C7AE12E11.aspx धन्यवाद! –

6

उत्तर here:

(...) MethodImplOptions.InternalCall क्रम कि विधि प्रणाली के भीतर ही आंतरिक रूप से कार्यान्वित किया जाता है बताने के लिए निर्वासन के साथ संयोजन के रूप में किया जाता है। यह कोर के कई .NET फ्रेमवर्क विधियों के लिए किया जाता है जो बेहतर अप्रबंधित कोड में कार्यान्वित किए जाने पर कार्यरत हैं। उदाहरण के लिए, String पर तरीकों, GC, और गणित कक्षाओं के कई InternalCall के रूप में चिह्नित कर रहे हैं। जैसा कि आपने देखा है, Guid.CompleteGuid भी InternalCall है।

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