2011-08-05 13 views
35

मुझे कोड की तीसरी पार्टी लाइब्रेरी में निम्न जैसे कोड मिलते हैं।सी # CoClass विशेषता क्या करता है?

[CoClass(typeof(BlahClass))] 
public interface Blah : IBlah 
{ 
} 

यह वास्तव में क्या कर रहा है? एमएसडीएन दस्तावेज ने मेरे लिए पालन करने के लिए पर्याप्त विषय को प्रकाशित नहीं किया।

+1

'CoClass' एक COM अवधारणा है। यदि आप COM को नहीं समझते हैं, तो आप 'CoClass' को समझ नहीं पाएंगे। –

+5

इस प्रश्न पर चर्चा में मदद मिल सकती है: http://stackoverflow.com/questions/1093536/how-does-the-c-compiler-detect-com-types – rsbarro

उत्तर

52

यह घोषणा करता है कि इंटरफेस Blah एक विशिष्ट वर्ग द्वारा कार्यान्वित किया जाना है। इसका मतलब है कि आप आसानी से new Blah कह सकते हैं और रनटाइम यह जान लेगा कि किस ऑब्जेक्ट को बनाना है - ऐसा कुछ जो इंटरफ़ेस के साथ सामान्य रूप से संभव नहीं है।

यदि आप BlahClass के लिए जेनरेट की गई घोषणा को देखते हैं, तो संभवतः इसके साथ जुड़े Guid होंगे जिसका उपयोग COM ऑब्जेक्ट का उदाहरण बनाने के लिए किया जा सकता है।

+0

ठीक है, जो मैं देख रहा हूं उसके प्रकाश में समझ में आता है आसपास के कोड में। धन्यवाद! COM बात के अलावा, इस विधि बनाम इंटरफेस को लागू करने के लिए कोई फायदा है? –

+0

मुझे आपकी टिप्पणी @RobertGowland का उत्तर चाहिए। क्या यह कक्षा को लागू करने या इंटरफ़ेस घोषित करने के लिए नाकिका पर्याप्त होगी? – Rikki

+1

@ मोहम्मद गौड़ारज़ी विशेषता '[CoClass (टाइपोफ (BlahClass))] 'वर्ग' BlahClass' का उल्लेख है, ताकि कक्षा कहीं मौजूद हो। और इसे इंटरफेस 'Blah' लागू करना होगा। एक COM टाइप लाइब्रेरी से उत्पन्न एक इंटरऑप असेंबली में, 'BlahClass' वास्तव में एक COM ऑब्जेक्ट होगा (संभवतः सी ++, वीबी 6, डेल्फी या कुछ और पूरी तरह कार्यान्वित किया गया है ...) –

संबंधित मुद्दे