c# - विजुअल स्टूडियो 2010 एक्सप्रेस में स्वचालित रूप से सी#रैपर क्लास को डीएल से उत्पन्न करें?




dll wrapper (2)

मुझे अपने एक सहयोगी ने बताया कि विजुअल स्टूडियो एक को .dll को इंगित करने की अनुमति देता है और ऑटो-जादुई रूप से सी # रैपर वर्ग उत्पन्न करता है। क्या यह वास्तव में संभव है? और यदि हां, तो यह कैसे प्राप्त करने के बारे में जाता है? मैंने वेब ब्राउज़ किया है, लेकिन कुछ भी आने में असफल रहा है!

सबको शुक्रीया!

अनुमान लगाया कि मैं इन संसाधनों को भी साझा करूंगा,


3 मामले:

  1. डीएलएल एक प्रबंधित असेंबली का प्रतिनिधित्व करता है => आप इसे सीधे अपने प्रोजेक्ट में संदर्भित करते हैं और इसका उपयोग करते हैं
  2. डीएलएल एक COM ऑब्जेक्ट का प्रतिनिधित्व करता है => आप एक प्रबंधित रैपर उत्पन्न करने के लिए tlbimp.exe उपयोगिता का उपयोग कर सकते हैं
  3. डीएलएल कुछ निर्यातित कार्यों के साथ एक अप्रबंधित पुस्तकालय का प्रतिनिधित्व करता है। यह सबसे कठिन है। कोई उपकरण नहीं हैं आपको निर्यात किए गए फ़ंक्शन नामों और पैरामीटरों को जानने और प्रबंधित पी / आमंत्रण रैपर बनाने के लिए लाइब्रेरी के दस्तावेज़ों से परामर्श करना होगा। निर्यात किए गए कार्यों की सूची देखने के लिए आप dumpbin.exe उपयोगिता का उपयोग कर सकते हैं। विभिन्न चरणों के बारे में एमएसडीएन पर एक लेख यहां दिया गया है।

मुझे पता है कि यह सवाल काफी पुराना है और ऐसा लगता है कि पर्याप्त उत्तर दिया गया है, लेकिन मैं सिर्फ एक विचार जोड़ना चाहता हूं जो मुझे लगता है कि यह महत्वपूर्ण हो सकता है। मैं पूरी तरह से गलत हो सकता था, इसलिए कृपया मेरा जवाब नमक के अनाज के साथ लें और अगर मैं हूं तो मुझे सही करें।

डीएलएल में सदस्यों / फ़ील्ड को कॉल करने में सक्षम होने के लिए, उन्हें कॉल करने के लिए आवश्यक जानकारी कुछ रूपों में पहुंच योग्य होनी चाहिए। वह जानकारी आपको एक रैपर लिखने की आवश्यकता होनी चाहिए। इसके साथ, आप सभी सदस्यों / फ़ील्ड "फॉर्म" उर्फ ​​विधि हेडर आदि को निर्धारित कर सकते हैं।

सी # में प्रतिबिंब के माध्यम से डीएलएल लोड करना संभव है और वह जानकारी प्राप्त करें। मैं ऊपर वर्णित विभिन्न डीएलएल-प्रकारों के बारे में नहीं जानता, लेकिन जैसा कि मैंने कहा, सदस्यों / क्षेत्रों को कॉल करने के लिए यह जानकारी कुछ रूप में होनी चाहिए। तो उस जानकारी को प्राप्त करने के लिए प्रतिबिंब का उपयोग करके, आप एक नई कक्षा जैसे "उपसर्ग ऑरिगिनलनाम" उत्पन्न कर सकते हैं और इसमें आपके मूल वर्ग के समान सदस्य / फ़ील्ड हैं, जो आपके मूल वर्ग के सदस्यों / फ़ील्ड को कॉल कर रहे हैं और अपनी वांछित अतिरिक्त कार्यक्षमता जोड़ रहे हैं।

इसलिए

  1. प्रत्येक डीएलएल (या परिधीय दस्तावेज़) आपको जानकारी को अपने प्रकारों का उपयोग करने की आवश्यकता देता है। अर्थात् सब कुछ जो "सार्वजनिक" के रूप में लागू किया जाता है
  2. आप प्रतिबिंब के माध्यम से इस आवश्यक जानकारी तक पहुंच सकते हैं
  3. दिया गया 1. और 2., आप डीएलएल से आवश्यक जानकारी निकालने के लिए एक प्रोग्राम बना सकते हैं और तदनुसार रैपर उत्पन्न कर सकते हैं।

जैसा कि मैंने कहा, मैं इस पर 100% निश्चित नहीं हूं, क्योंकि अन्य उत्तर मुझे यह ध्वनि देते हैं जैसे किसी कारण से यह बहुत कठिन या असंभव हो सकता है।







visual-studio-express