मेरे पास एक प्रोजेक्ट है जो कई प्रोजेक्ट लाइब्रेरीज़ का उपयोग करता है जो मेरी परियोजना का हिस्सा हैं, पहले असेंबलीए लोड हो गया है, फिर असेंबलीबी लोड हो गया है। AssemblyA में कोड है कि जब AssemblyA ऐसा करने की कोशिश करता है करता है निम्नलिखितवर्तमान डोमेन में असेंबली लोड को मजबूर करने का एक सही तरीका
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
var assemblyB = assemblies
.Where(x=>x.GetName() == "AssemblyB")
.First();
var type = assemblyB.GetType("AssemblyB_Type");
दुर्भाग्य है, AssemblyB CurrentDomain में अभी तक लोड नहीं है, तो यह है कि विधानसभा लोड करने के लिए मैं निम्नलिखित अनावश्यक बात कर रहा हूँ:
var x = typeof(AssemblyB.AssemblyB_Type);
कंपाइलर चेतावनी दिखाता है कि इस लाइन की आवश्यकता नहीं है, हालांकि मुझे यह समझाने के लिए शब्दों को नहीं मिल रहा है कि अन्यथा यह काम नहीं करेगा, इसलिए सवाल होगा, आप कैसे सही तरीके से (फेंग शुई शब्दों में) बल विधानसभा में अतिरिक्त-अनुपयोगी नलसाजी के बिना CurrentDomain में लोड
आप तो मांग पर एक विधानसभा लोड करने के लिए चाहते हैं, बस Assembly.Load का उपयोग()। या सीएलआर को स्वचालित रूप से असेंबली लोड करने के लिए var type = typeof (नेमस्पेसनाम इनएस्परब्स बी। एस्परब्स बीबी टाइप) का उपयोग करें। –
मुझे लगता है कि मैं थोड़ा उलझन में हूँ। यदि आप टाइपऑफ (असेंबली बी। एस्परब्स बीबी टाइप) करने में सक्षम हैं, तो आपको असेंबली बी। गेट टाइप ("असेंबलीबीटी टाइप") क्यों करना है? –
एक तीसरी पार्टी जेआईएनटी लाइब्रेरी (जावास्क्रिप्ट इंटरप्रिटर) है। यह जावास्क्रिप्ट स्रोत के भीतर से सीएलआर प्रकार बाध्यकारी की अनुमति देता है। सबसे पहले यह AppDomain.CurrentDomain.GetAssemblies() का उपयोग करता है और फिर यह उस असेंबली में उचित प्रकार का पता लगाने का प्रयास करता है, अगर मेरी असेंबली सी # कोड से छूटी नहीं है, तो यह CurrentDomain पर लोड नहीं है और जावास्क्रिप्ट से पहुंच योग्य नहीं है ... – Lu4