COM インターフェイスのシミュレート
更新 : 2007 年 11 月
COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) は、すべての COM から参照できるパブリック インターフェイス、データ型、および戻り値を COM のインターフェイスに基づいたやりとりの参照整合性適用に矛盾しない方法で COM クライアントに公開します。COM クライアントは、.NET Framework オブジェクトのメソッドを呼び出すときと同じ方法で、COM オブジェクトのメソッドを呼び出すことができます。
このシームレスなアプローチを構築するために、CCW は、IUnknown や IDispatch のような従来の COM インターフェイスを構築します。次の図に示すように、CCW は、CCW でラップした .NET オブジェクトへの 1 つの参照を管理します。COM クライアントと .NET オブジェクトは、CCW のプロキシおよびスタブ構成を経由して相互にやりとりします。
COM インターフェイスと COM 呼び出し可能ラッパー
.NET Framework は、クラスによってマネージ環境に明示的に実装されるインターフェイスを公開するだけでなく、オブジェクトの代わりに、次の表に一覧する COM インターフェイスの実装を供給します。.NET クラスは、これらのインターフェイスの独自の実装を提供することにより、既定の動作をオーバーライドできます。ただし、ランタイムは、常に IUnknown インターフェイスと IDispatch インターフェイスの実装を提供します。
インターフェイス |
説明 |
---|---|
Idispatch |
型の遅延バインディングのための機構を提供します。 |
IerrorInfo |
エラーの説明テキスト、ソース、ヘルプ ファイル、ヘルプ テキスト、およびそのエラーを定義したインターフェイスの GUID を提供します (.NET のクラスの場合は常に GUID_NULL)。 |
IprovideClassInfo |
COM クライアントがマネージ クラスによって実装された ITypeInfo インターフェイスにアクセスできるようにします。 |
ISupportErrorInfo |
マネージ オブジェクトが IErrorInfo インターフェイスをサポートしているかどうかを COM クライアントが判断できるようにします。サポートされている場合は、クライアントが最新の例外オブジェクトへのポインタを取得できるようにします。IErrorInfo インターフェイスは、すべてのマネージ型でサポートされます。 |
ITypeInfo |
Tlbexp.exe によって生成されるクラスについての型情報とまったく同じ型情報を提供します。 |
Iunknown |
IUnknown インターフェイスの標準実装を提供します。このインターフェイスにより、COM クライアントは、CCW の有効期間を管理し、型の強制変換を提供できます。 |
マネージ クラスは、次の表に示す COM インターフェイスも提供できます。
インターフェイス |
説明 |
---|---|
(_classname) クラス インターフェイス |
ランタイムによって公開されるインターフェイスであり、明示的には定義されません。マネージ オブジェクトに明示的に公開されるすべてのパブリック インターフェイス、メソッド、プロパティ、およびフィールドを公開します。 |
IConnectionPoint および IConnectionPointContainer |
デリゲート ベースのイベントを供給するオブジェクトのためのインターフェイス (イベント サブスクライバを登録するためのインターフェイス)。 |
IDispatchEx |
クラスが IExpando を実装している場合にランタイムによって供給されるインターフェイス。IDispatchEx は、IDispatch を拡張したインターフェイスですが、IDispatch とは異なり、メンバの列挙、追加、削除、および大文字と小文字を区別した呼び出しを実行できます。 |
IEnumVARIANT |
コレクション型クラスのインターフェイス。クラスが IEnumerable を実装している場合に、コレクション内のオブジェクトを列挙します。 |