2011-02-09 11 views
9

COM veya coclass ile ilgili çok fazla arka plan bilgim yok, bu yüzden neden bir arabirimle new işlecini kullanabileceğimi anlamıyorum.Neden bir COM arabiriminin yeni bir örneğini oluşturmak mümkün?

Visual Studio 2010 Application incelenmesi
using Microsoft.Office.Interop.Excel; 

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

bana gösteriyor:

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 
    { 
    } 
} 

Ne perde arkasında oluyor bu derler ve düzgün çalışan neden dil/çerçeve-agnostik görünümünden, bu kafa karıştırıcı?

cevap

5

Bu yalnızca COM arabirimleri için mümkündür, inanıyorum. Marc Gravell'in bir açıklaması var here.

Kısa yanıt, bir COM arabiriminin "varsayılan" bir uygulama sınıfı ile eşleştirilebilmesidir, böylece arabirimi "başlattığınızda" bu varsayılan uygulama sınıfının bir örneğini oluşturursunuz. Örneğinizdeki Application arabiriminde, bu, ApplicationClass olarak görünüyor.

+0

Teşekkürler. Bu bağlantının http://stackoverflow.com/questions/1093536/how-does-the-c-compiler-detect-com-types bağlantısına bir bağlantısı vardı. Sanırım yanlış anahtar kelimeleri araştırıyordum - benim sorumun aslında bir kopyası gibi görünüyor. – ide

İlgili konular