में कस्टम जानकारी शामिल करें मैं एक एक्स्टेंसिबल एप्लिकेशन बना रहा हूं जो Assembly.LoadFile()
के माध्यम से रनटाइम पर अतिरिक्त असेंबली लोड करेगा। उन अतिरिक्त असेंबली में डब्ल्यूपीएफ संसाधन शब्दकोश (खाल, इत्यादि), सादे संसाधन (रेक्स), और/या प्लगइन कक्षाएं जैसी चीजें होंगी। असेंबली में कोई सार्वजनिक कक्षाएं, केवल संसाधन या संसाधन शब्दकोश भी हो सकते हैं।नेट 4 - असेंबली
मैं एक असेंबली की पहचान करने के लिए एक तरीका ढूंढ रहा हूं, जैसे दोस्ताना नाम (जैसे "अतिरिक्त खाल" या "एकीकृत ब्राउज़र"), एक असेंबली के कार्यात्मक प्रकार (स्किन्स लाइब्रेरी, स्किन्स लाइब्रेरी | प्लगइन लाइब्रेरी, आदि) और अतिरिक्त जानकारी (जैसे ConflictsWith (नया [] {"स्किन्स लाइब्रेरी", "ब्राउज़रप्लगिन")
अब तक मैं असेंबली नामांकन में एक सम्मेलन का उपयोग कर रहा हूं (*.Skins.*.dll
, आदि)। प्रत्येक असेंबली में मेरे पास खाली, डमी है क्लास जो कस्टम क्लास एट्रिब्यूट्स के लिए प्लेसहोल्डर है, जो वास्तविक (असेंबली-व्यापी) जानकारी रखती है, लेकिन यह हैक की तरह लगता है। क्या इसमें कुछ सुव्यवस्थित, मानक तरीका है इसे संभालने के लिए?
मैं विकसित कर रहा हूं मेरी लोडर में केंद्रीय लोडर सिस्टम और अन्य डेवलपर उन अतिरिक्त असेंबली विकसित करेंगे, इसलिए मैं सम्मेलनों और नलसाजी विवरण को कम करना चाहता हूं।
यदि आपके पास "डिफ़ॉल्ट" संसाधन परिभाषित किया गया है, तो प्रोसेसरी नाम (name.lang.resx) को वर्तमान भाषा के लिए स्वचालित रूप से लोड किया जाना चाहिए। फ्रेमवर्क आपके लिए करता है। आपको संसाधनों को मैन्युअल रूप से लोड करने की आवश्यकता क्यों है? –
क्योंकि उन संसाधन फ़ाइलों को एक असेंबली में संकलित किया गया है और उनमें से कई हैं। उदाहरण के लिए मेरे पास स्किन 1 और स्किन 2 असेंबली हैं, और कॉन्फ़िगर इंगित करता है कि ऐप स्किन 1 का उपयोग करता है, इसलिए ऐप को स्वचालित रूप से दोनों को लोड नहीं करना चाहिए। हालांकि ऐप को स्किन 2 के अस्तित्व के बारे में पता होना चाहिए ताकि उपयोगकर्ता इसे चुन सके। –
क्या कुछ इंटरफ़ेस (ISkin?) के कार्यान्वयन के रूप में खाल होना संभव है, इसलिए आप एक डीएल में अपना स्वयं का कार्यान्वयन लिखते हैं, और उस डीएल में आवश्यक संसाधन जोड़ते हैं? प्रत्येक त्वचा के लिए आपके पास एक असेंबली होगी, और उस संसाधन के लिए जरूरी सभी संसाधन जो इसके संदर्भ में संदर्भित हैं, स्वचालित रूप से लोड हो जाते हैं। आपको केवल चिंता करने की आवश्यकता होगी कि दो खाल एक ही नाम के साथ संसाधनों का उपयोग नहीं करती हैं (सम्मेलन नामकरण के लिए स्किनम जोड़कर रोकने के लिए आसान)। –