2011-02-09 18 views
9

मेरे पास COM और coclasses के बारे में बहुत अधिक पृष्ठभूमि नहीं है, इसलिए मुझे समझ में नहीं आता कि मैं इंटरफेस के साथ new ऑपरेटर का उपयोग क्यों कर सकता हूं। एक भाषा/ढांचे-अज्ञेयवाद दृश्य से, यह भ्रामक ऐसा क्यों संकलित करता है तथा सही ढंग से चलाता है:COM इंटरफ़ेस का नया उदाहरण क्यों बनाना संभव है?

using Microsoft.Office.Interop.Excel; 

public class ExcelProgram 
{ 
    static void Main(string[] args) 
    { 
     Application excel = new Application(); 
    } 
} 

दृश्य स्टूडियो 2010 में Application निरीक्षण मुझे पता चलता है:

using System.Runtime.InteropServices; 

namespace Microsoft.Office.Interop.Excel 
{ 
    // Summary: 
    //  Represents the entire Microsoft Excel application. 
    [Guid("000208D5-0000-0000-C000-000000000046")] 
    [CoClass(typeof(ApplicationClass))] 
    public interface Application : _Application, AppEvents_Event 
    { 
    } 
} 

क्या पर्दे के पीछे चल रहा है?

उत्तर

5

यह COM इंटरफेस के लिए केवल संभव है, मुझे विश्वास है। मार्क ग्रेवेल के पास स्पष्टीकरण here है।

संक्षिप्त उत्तर यह है कि एक COM इंटरफ़ेस को "डिफ़ॉल्ट" कार्यान्वयन कक्षा के साथ जोड़ा जा सकता है, ताकि जब आप इंटरफ़ेस को "तत्काल" कर सकें तो आप वास्तव में उस डिफ़ॉल्ट कार्यान्वयन कक्षा का उदाहरण बना रहे हैं। आपके उदाहरण में Application इंटरफ़ेस के मामले में, यह ApplicationClass प्रतीत होता है।

+0

धन्यवाद। उस लिंक के लिंक http://stackoverflow.com/questions/1093536/how-does-the-c-compiler-detect-com-types के लिंक के लिए एक लिंक था। मान लीजिए कि मैं गलत कीवर्ड खोज रहा था - ऐसा लगता है कि मेरा प्रश्न अनिवार्य रूप से एक डुप्लिकेट है। – ide

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