2016-02-25 12 views
5

मैं Regex.CompileToAssembly() द्वारा उत्पन्न असेंबली को पढ़ने के लिए मोनो सेसिल का उपयोग कर रहा हूं। जब मैं प्रकारों के माध्यम से पुनरावृत्ति करता हूं, तो रूट नामस्थान में <Module> नामक एक प्रकार होता है। इस प्रकार का कोई आधार प्रकार नहीं है। इस प्रकार क्या है? क्या यह कुछ मोनो। सेसिल आर्टिफैक्ट या कुछ ऐसा है जो वास्तव में .NET असेंबली का असली हिस्सा है? यह किस भूमिका निभाता है?"<Module>" प्रकार क्या है?

उत्तर

7

<Module> प्रकार घोषणाओं के लिए एक प्लेसहोल्डर है जो सीएलआई मॉडल में फिट नहीं है। आमतौर पर मिश्रित-मोड में असेंबली में प्रासंगिक होते हैं, जिसमें एक प्रबंधित भाषा में लिखे गए कोड और सी या सी ++ जैसे अप्रबंधित दोनों होते हैं। यह शुद्ध प्रबंधित असेंबली के लिए खाली है।

वे भाषाएं मुफ्त कार्यों और वैश्विक चर का समर्थन करती हैं। सीएलआर सीधे इसका समर्थन नहीं करता है, विधियों और चर हमेशा एक प्रकार का सदस्य होना चाहिए। तो मेटाडाटा जनरेटर एक साधारण चाल का उपयोग करता है, यह ऐसे कार्यों और चर के घर होने के लिए नकली प्रकार बनाता है। उस नकली प्रकार का नाम <Module> है। सदस्यों को छिपाने के लिए इसमें हमेशा आंतरिक पहुंच है। उन प्रकारों में से केवल एक ही है, इसकी आरआईडी हमेशा होती है 1.

सीएलआर स्रोत कोड इसे "ग्लोबल क्लास" कहते हैं।

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