次の方法で共有


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

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

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

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

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

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

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

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

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

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

クラスによってクラス インターフェイスが実装されます。クラスでは、複数のインターフェイスを実装できますが、最初に実装されるのは既定のクラス インターフェイスです。ここで、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# プログラミング ガイド