COM クラスの例 (C# プログラミング ガイド)

更新 : 2007 年 11 月

ここでは、COM オブジェクトとして公開されるクラスの例を紹介します。このコードを .cs ファイルに保存して、プロジェクトに追加後、[COM の相互運用機能に登録] プロパティを [True] に設定します。詳細については、「方法 : コンポーネントを COM 相互運用機能に登録する」を参照してください。

Visual C# オブジェクトを COM に公開するには、クラス インターフェイス、イベント インターフェイス (必要な場合)、およびクラス自体を宣言する必要があります。クラス メンバを COM で参照するには、次の規則に従う必要があります。

  • クラスがパブリックであること。

  • プロパティ、メソッド、およびイベントがパブリックであること。

  • プロパティとメソッドがクラス インターフェイスで宣言されていること。

  • イベントがイベント インターフェイスで宣言されていること。

これらのインターフェイスで宣言されていない、クラス内のほかのパブリック メンバは、COM から参照されませんが、ほかの .NET Framework オブジェクトからは参照されます。

プロパティとメソッドを COM に公開するには、それらをクラス インターフェイスで宣言し、DispId 属性でマークを付けて、クラスに実装する必要があります。メンバをインターフェイスで宣言する順序は、COM の vtable で使用される順序になります。

クラスのイベントを公開するには、それらをイベント インターフェイスで宣言し、DispId 属性でマークを付ける必要があります。このクラスではこのインターフェイスを実装しないでください。

クラスによってクラス インターフェイスが実装されます。クラスでは、複数のインターフェイスを実装できますが、最初に実装されるのは既定のクラス インターフェイスです。ここで、COM に対して公開するメソッドとプロパティを実装します。このメソッドとプロパティは、パブリックとしてマークされており、クラス インターフェイスの宣言と同じであることが必要です。また、ここでクラスから発生するイベントを宣言します。このイベントは、パブリックとしてマークされており、イベント インターフェイスの宣言と同じであることが必要です。

詳細については、「COM 相互運用性 (第 1 部) サンプル」、「COM 相互運用性 (第 2 部) サンプル」、および「COM の相互運用性に関するサンプル」を参照してください。

使用例

using System.Runtime.InteropServices;

namespace project_name
{
    [Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
    public interface ComClass1Interface
    {
    }

    [Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"), 
        InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface ComClass1Events 
    {
    }

    [Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"),
        ClassInterface(ClassInterfaceType.None),
        ComSourceInterfaces(typeof(ComClass1Events))]
    public class ComClass1 : ComClass1Interface
    {
    }
}

参照

概念

C# プログラミング ガイド

参照

相互運用性 (C# プログラミング ガイド)

[ビルド] ページ (プロジェクト デザイナ) (C#)