C# - How to test at runtime which COM coclass was used to instantiate an interface? -


मान लें कि आपके पास एक COM इंटरफ़ेस ICOMInterface है जो कोकलेस Coclass1 और कोक्लास 2 । इन कॉकलेसों में से किसी भी अपने स्वयं के इंटरफेस नहीं हैं (सादगी के लिए और मेरी समस्या को स्पष्ट करने के लिए)।

सी # में, आप एक कॉकैस से COM अंतरफलक का एक उदाहरण बना सकते हैं जैसे:

< पूर्व> ICOMInterface myComInterface = नया Coclass1 ();

अब, आप यह कैसे निर्धारित कर सकते हैं कि myComInterface को Coclass1 या Coclass2 ?

जैसे "है" कथन का प्रयोग करना हमेशा सही होता है, और इस प्रयोजन के लिए बेकार है।

  डीबग। विरাইটलाइन (मेरी कॉमइंटरफेस कोक्लस 1 है) // "सत्य" डीबग लिखता है .इटइटलाइन (मेरा कॉमइंटरफ़ाइड कोक्लस 2 है) / लिखता है "सच"  

यह काम करेगा अगर मैं इंटरफेस का परीक्षण कर रहा था, कोकलेस नहीं, लेकिन इन कोकलेसों में उनके दोनों के कार्यान्वयन के अलावा अन्य इंटरफेस नहीं हैं , ICOMInterface

मुझे उम्मीद है कि इस सामान्य परिदृश्य का एक सरल जवाब है जो मैं देख रहा हूं, अन्यथा मैं अधिक विशिष्ट विवरण पोस्ट कर सकता हूं यदि आवश्यक हो।

आपकी मदद के लिए धन्यवाद!

यदि COM ऑब्जेक्ट इंटरफ़ेस लागू करता है, तो आप इसके सीएलएसआईडी प्राप्त कर सकते हैं आईपरर्सिस्ट :: GetClassID () विधि के माध्यम से यह जानने के लिए आप सभी की जरूरत हो सकती है कि आप किस वर्ग के साथ काम कर रहे हैं आप WinAPI ProgIDFromCLSID () विधि के माध्यम से मानव-वाचनीय प्रोजेड भी प्राप्त कर सकते हैं।

यहां देखें:


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -