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

ここでは、COM オブジェクトとして公開されるクラスの例を紹介します。The following is an example of a class that you would expose as a COM object. このコードを .cs ファイルに保存して、プロジェクトに追加したあと、[COM の相互運用機能に登録] プロパティを [True] に設定します。After this code has been placed in a .cs file and added to your project, set the Register for COM Interop property to True. 詳細については、「NIB: 方法: コンポーネントを COM 相互運用機能に登録する」を参照してください。For more information, see NIB: How to: Register a Component for COM Interop.

Visual C# オブジェクトを COM に公開するには、クラス インターフェイス、イベント インターフェイス (必要な場合)、クラス自体を宣言する必要があります。Exposing Visual C# objects to COM requires declaring a class interface, an events interface if it is required, and the class itself. クラスのメンバーを COM で参照するには、次の規則に従う必要があります。Class members must follow these rules to be visible to COM:

  • クラスはパブリックであること。The class must be public.

  • プロパティ、メソッド、およびイベントがパブリックであること。Properties, methods, and events must be public.

  • プロパティとメソッドがクラス インターフェイスで宣言されていること。Properties and methods must be declared on the class interface.

  • イベントがイベント インターフェイスで宣言されていること。Events must be declared in the event interface.

これらのインターフェイスで宣言されていない、クラス内の他のパブリック メンバーは、COM から参照されませんが、他の .NET Framework オブジェクトからは参照されます。Other public members in the class that are not declared in these interfaces will not be visible to COM, but they will be visible to other .NET Framework objects.

プロパティとメソッドを COM に公開するには、それらをクラス インターフェイスで宣言し、DispId 属性でマークを付けて、クラスに実装する必要があります。To expose properties and methods to COM, you must declare them on the class interface and mark them with a DispId attribute, and implement them in the class. メンバーをインターフェイスで宣言する順序は、COM vtable で使用される順序になります。The order in which the members are declared in the interface is the order used for the COM vtable.

クラスのイベントを公開するには、それらをイベント インターフェイスで宣言し、DispId 属性でマークを付ける必要があります。To expose events from your class, you must declare them on the events interface and mark them with a DispId attribute. クラスでこのインターフェイスを実装しないでください。The class should not implement this interface.

クラスでは、クラス インターフェイスが実装されます。複数のインターフェイスを実装できますが、最初に実装されるのは、既定のクラス インターフェイスです。The class implements the class interface; it can implement more than one interface, but the first implementation will be the default class interface. ここで、COM に対して公開するプロパティとメソッドを実装します。Implement the methods and properties exposed to COM here. プロパティとメソッドは、パブリックとしてマークされており、クラス インターフェイスの宣言と一致する必要があります。They must be marked public and must match the declarations in the class interface. また、ここでクラスから発生するイベントを宣言します。Also, declare the events raised by the class here. イベントは、パブリックとしてマークされており、イベント インターフェイスの宣言と一致する必要があります。They must be marked public and must match the declarations in the events interface.

Example

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

参照See Also

C# プログラミング ガイドC# Programming Guide
相互運用性Interoperability
[ビルド] ページ (プロジェクト デザイナー) (C#)Build Page, Project Designer (C#)