COM クラスの例
次のコードは、COM オブジェクトとして公開するクラスの例です。 このコードをプロジェクトに追加される .cs ファイルに配置した後、[COM の相互運用機能に登録] プロパティを [True] に設定します。 詳細については、コンポーネントを COM 相互運用機能に登録する」をご覧ください。
C# オブジェクトを COM に公開するには、クラス インターフェイス、"イベント インターフェイス" (必要な場合)、クラス自体を宣言する必要があります。 クラスのメンバーを COM で参照するには、次の規則に従う必要があります。
- クラスはパブリックであること。
- プロパティ、メソッド、およびイベントがパブリックであること。
- プロパティとメソッドがクラス インターフェイスで宣言されていること。
- イベントがイベント インターフェイスで宣言されていること。
これらのインターフェイスで宣言していないクラス内の他のパブリック メンバーは、COM から参照できませんが、他の .NET オブジェクトからは参照できます。 プロパティとメソッドを 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
{
}
}
関連項目
.NET