次の方法で共有


相互運用のための .NET 型の要件

アセンブリ内の型を COM アプリケーションに公開する場合は、デザイン時に COM 相互運用機能の要件について検討する必要があります。 マネージ型 (クラス、インターフェイス、構造体、列挙型) は、次のガイドラインに従うことで、COM 型とシームレスに統合されます。

  • クラスでは、インターフェイスを明示的に実装する必要があります。

    COM 相互運用機能では、クラスのすべてのメンバーと、その基本クラスのメンバーを含んだインターフェイスを自動的に生成する機能が提供されますが、インターフェイスを明示的に実装する方がはるかに優れています。 自動的に生成されるインターフェイスをクラス インターフェイスと呼びます。 ガイドラインについては、「クラス インターフェイスの概要」を参照してください。

    Visual Basic 2005、C#、C++ を使うと、インターフェイス定義言語 (IDL: Interface Definition Language) またはそれに相当する他の言語を使わなくても、インターフェイス定義をコードに組み込むことができます。 構文の詳細については、使用する言語のドキュメントを参照してください。

  • マネージ型はパブリックである必要があります。

    アセンブリ内で、登録されたり、タイプ ライブラリにエクスポートされたりするのはパブリック型だけです。 そのため、COM から参照できるのはパブリック型だけです。

    マネージ型は他のマネージ コードに対して、COM には公開されない機能を公開します。 たとえば、パラメーター化されたコンストラクター、静的メソッド、定数フィールドは、COM クライアントには公開されません。 また、ランタイムは型のデータを入出力双方にマーシャリングするため、データはコピーまたは変換されることがあります。

  • メソッド、プロパティ、フィールド、およびイベントはパブリックである必要があります。

    パブリック型のメンバーも、COM から参照できるようにする場合には、パブリックである必要があります。 アセンブリ、パブリック型、またはパブリック型のパブリック メンバーの参照可能範囲を制限するには、ComVisibleAttribute を適用します。 既定では、すべてのパブリック型およびメンバーが参照可能です。

  • 型は、COM からアクティブ化されるパブリックな既定のコンストラクターを持つ必要があります。

    パブリックなマネージ型は COM から参照できます。 ただし、パブリックな既定のコンストラクター (引数を持たないコンストラクター) がない場合、COM クライアントでは型を作成できません。 その他のなんらかの方法でアクティブ化された COM クライアントなら、型を使用できます。

  • 型を抽象型にすることはできません。

    COM クライアントでも、.NET クライアントでも、抽象型は生成できません。

マネージ型の継承の階層構造は、COM にエクスポートされると平坦になり、階層がなくなります。 マネージ環境とアンマネージ環境では、バージョン管理も異なります。 COM に公開される型は、他のマネージ型と同じバージョン管理特性を持ちません。

参照

参照

ComVisibleAttribute

概念

COM への .NET Framework コンポーネントの公開

クラス インターフェイスの概要

相互運用固有の属性の適用

COM 用のアセンブリのパッケージ化