2010-08-09 14 views

उत्तर

10

Assembly.Load एक गतिशील संदर्भ है क्योंकि आप रन-टाइम पर बाहरी डीएलएल गतिशील रूप से लोड कर रहे हैं। आप एक स्थिर संदर्भ पर विचार करेंगे जैसे कि जब आप किसी .NET प्रोजेक्ट का संदर्भ जोड़ रहे हों और उस संदर्भ के साथ प्रोजेक्ट का निर्माण कर रहे हों।

संपादित करें:

MSDN डॉक्टर से:

संकलक रिकॉर्ड स्थिर निर्माण समय में विधानसभा प्रकट के मेटाडेटा में संदर्भ ।

हमम, इस बारे में निश्चित नहीं है। मैं अब और अधिक सुधार टिप्पणियां प्राप्त करने या बेहतर उत्तरों को देखने की उम्मीद में, मेरा उत्तर यहां रखूंगा।

+0

यह पूरी तरह से सही नहीं है मेरा मानना ​​है कि ... एमएसडीएन में वर्णित एक डायनैमिक संदर्भ (http://msdn.microsoft.com/en-us/library/yx7xezcf (VS.71) .aspx) संदर्भ गतिशील संदर्भ केवल पर्याप्त जानकारी के साथ एक संदर्भ लोड करने के रूप में रनटाइम को असेंबली लोड होने के लिए खोजना पड़ता है। स्थिर संदर्भों के साथ, असेंबली का स्थान (जीएसी, आवेदन सख्त, आदि) ज्ञात हैं और अभी भी Assembly.लोड का उपयोग करके पूरा किया जा सकता है। – Achilles

0

एमएसडीएन (http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx) में वर्णित एक डायनैमिक संदर्भ संदर्भों को लोड करने के लिए रनटाइम को केवल पर्याप्त जानकारी के साथ संदर्भ लोड करने के संदर्भ में गतिशील संदर्भ संदर्भ देता है। स्थिर संदर्भों के साथ, असेंबली का स्थान (जीएसी, आवेदन सख्त, आदि) ज्ञात हैं और अभी भी Assembly.लोड का उपयोग करके पूरा किया जा सकता है।

2

के संदर्भ में:

क्या निहितार्थ हैं और सुझाव परिदृश्यों या तो उपयोग करने के लिए?

आमतौर पर, यदि मैं Assembly.Load() का उपयोग करता हूं, तो ऐसा इसलिए है क्योंकि मैं एक प्लगिंग सिस्टम विकसित कर रहा हूं। गतिशील संदर्भ उन असेंबली को शामिल करने में सुविधा प्रदान करते हैं जो मेरे निर्माण का जरूरी हिस्सा नहीं हैं।

गतिशील रूप से लोड असेंबली से इंस्टेंटियेटिंग प्रकारों को कम से कम कुछ प्रतिबिंब की आवश्यकता होती है। आवश्यक प्रतिबिंब की मात्रा को यह सुनिश्चित करके कम किया जा सकता है कि गतिशील रूप से लोड किए गए प्रकार कुछ ज्ञात इंटरफ़ेस या बेस क्लास (एक स्थिर रूप से लोड असेंबली से) को लागू करते हैं।

संक्षेप में, गतिशील रूप से लोड असेंबली का उपयोग करने के लिए यह बहुत काम है; हालांकि, ऐसा करने से उपयोगकर्ताओं को प्लग-इन विकसित करने की अनुमति देकर अधिक लचीला बना दिया जा सकता है। गतिशील संदर्भों की अनुमानित लचीलापन (जो एक आवश्यकता नहीं हो सकती है) की अनुमानित लचीलापन का व्यापार-बंद करें, और स्थिर संदर्भों के लिए विजुअल स्टूडियो से डिज़ाइन-टाइम समर्थन।

एक प्लग-इन आर्किटेक्चर बनाने पर विचार करने योग्य अभ्यास अपने स्वयं के ऐपडोमेन्स में असेंबली लोड करना है। ऐसा करने से आप असेंबली की सुरक्षा अनुमतियों पर बेहतर नियंत्रण प्राप्त कर सकते हैं, जिन पर आप पूरी तरह भरोसा नहीं कर सकते हैं, और अतिरिक्त लाभ प्रदान करते हैं कि असेंबली रन-टाइम पर अनलोड किए जा सकते हैं। निजी तौर पर, मैंने श्रम-केंद्रित होने के लिए ऐपडोमेन्स के साथ काम करना पाया; हालांकि, यदि लाभ की आवश्यकता है, तो यह जानना अच्छा है कि AppDomains वहां हैं।

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