2009-03-11 7 views
28

से COM ऑब्जेक्ट्स तक पहुंचने का सबसे अच्छा तरीका मैं COM ऑब्जेक्ट्स के रूप में सामने आने वाली विभिन्न ऑब्जेक्ट्स का उपयोग करने की योजना बना रहा हूं। उन्हें उपयोग करने में आसान बनाने के लिए, मैं उन्हें सी # ऑब्जेक्ट्स के रूप में लपेटना चाहता हूं। इसके लिए सबसे अच्छा तरीका क्या है?सी #

+0

सी # के लिए भाषा "उत्पाद प्रबंधक" मैड्स टोरगर्सन ने सी # के बारे में आखिरी दीपफ्राइडबाइट पॉडकास्ट में कहा कि उन्होंने COM के साथ इंटरऑप को कम करने के लिए कुछ विशेषताओं को जोड़ा या जोड़ रहे हैं। अगर मैं बस याद कर सकता था कि यह क्या था ... – f3lix

+0

मुझे लगता है कि आप सी # 4.0 में आने वाले 'गतिशील' चर प्रकार का जिक्र कर रहे हैं। यह नया कीवर्ड इसे आसान बनाता है, लेकिन यह सी # के साथ पहले से ही संभव है। –

उत्तर

29

पुस्तकालय पहले से पंजीकृत है, तो आप निम्न चरणों का पालन कर सकते हैं करने के लिए दृश्य स्टूडियो आप के लिए एक इंटरॉप विधानसभा उत्पन्न करना चाहते हैं:

  • अपने दृश्य स्टूडियो परियोजना के लिए खुला है।
  • 'संदर्भ' पर राइट क्लिक करें (अपने समाधान एक्सप्लोरर में प्रोजेक्ट के ठीक नीचे) और 'संदर्भ जोड़ें' का चयन करें।
  • COM टैब का चयन करें।
  • उस घटक का चयन करें जिसके साथ आप इंटरपॉप करना चाहते हैं।
  • 'ठीक' चुनें।

यह कक्षा या सी # कक्षाओं का सेट होगा जो सभी सामान्य इंटरफ़ेस सामग्री को सामान्य सी # कक्षा के साथ लपेटता है। फिर आप इसे किसी अन्य सी # लाइब्रेरी की तरह इस्तेमाल करते हैं। यदि संदर्भ का आयात अच्छी तरह से काम करता है, तो आप इसे किसी भी अन्य संदर्भ की तरह खोज सकते हैं और विधियों/structs/कक्षाओं/स्थिरांक उस नामस्थान और इंटेलिजेंस में दिखाना चाहिए।

यह आपको कम से कम शुरू कर देगा। यदि यह किसी कॉर्पोरेट माहौल में तैनात किया गया है या जिसे आप नियंत्रित कर सकते हैं, तो यह सब आपको चाहिए।

4

आप (प्रारंभ में) केवल संदर्भ आयात कर सकते हैं। अगर आपको अधिक नियंत्रण की आवश्यकता है (या वीएस के आयात से त्रुटियां प्राप्त करें) तो आप विंडोज एसडीके में tlbimp का उपयोग कर सकते हैं। यह इंटरऑप असेंबली बनाएगा। आप मेटाडेटा से कक्षा परिभाषाएं प्राप्त कर सकते हैं।

संपादित करें: यह वास्तव में एक बहुत अधिक जटिल है अगर आप 64 बिट के साथ काम करने

+0

यह कोई कठिन या अलग क्यों है? बस x64 से tlbimp का उपयोग करें। नेट टूल सेट –

+0

मेरा अनुमान किसी भी निर्भर असेंबली होगी जो 32-बिट आर्किटेक्चर का उपयोग करेगा। मुझे पता है कि 32-बिट संकलित COM इंटरऑप असेंबली का उपयोग कर अनुप्रयोगों के 64-बिट संस्करण काम नहीं करते हैं और इसके विपरीत। मैं हमेशा इस धारणा के तहत था कि x64 या तो आर्किटेक्चर चला सकता है, लेकिन जाहिर है कि यह मामला नहीं है। –

8

इस पर MSDN से एक अच्छा लेख, कि प्रबंधित और अप्रबंधित कोड बताते है, पैदल मार्ग कदम कैसे करना है द्वारा कदम। http://msdn.microsoft.com/en-us/library/ms973800.aspx#

का आनंद लें!