9

COMや剰余類についての知識があまりないので、なぜnewインターフェイスで演算子を使用できるのかよくわかりません。言語/フレームワークにとらわれない観​​点から、これが正しくコンパイルおよび実行される理由は混乱しています。

using Microsoft.Office.Interop.Excel;

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

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

舞台裏で何が起こっているのですか?

4

1 に答える 1

5

これはCOMインターフェースでのみ可能だと私は信じています。MarcGravellがここに説明をしています。

簡単に言うと、COMインターフェイスは「デフォルト」の実装クラスと組み合わせることができるため、インターフェイスを「インスタンス化」すると、実際にはそのデフォルトの実装クラスのインスタンスが作成されます。あなたの例のインターフェースの場合、それはのApplicationように見えますApplicationClass

于 2011-02-09T23:37:22.200 に答える