選択したインターフェイスのマーシャリング

ランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) の主要な目標は、マネージ プログラミング モデルとアンマネージ プログラミング モデルの相違を隠ぺいすることです。 次の図に示すように、RCW は、選択された COM のインターフェイスを .NET のクライアントには公開せずに使用し、シームレスな状態遷移を作成します。

COM インターフェイスとランタイム呼び出し可能ラッパー

インターフェイス付き RCW

RCW は、事前バインディングのオブジェクトとして作成されたときは、特定の型になります。 RCW は、COM オブジェクトが実装しているインターフェイスを実装し、そのオブジェクトのインターフェイスからメソッド、プロパティ、およびイベントを公開します。 この図では、RCW は INew インターフェイスを公開しますが、IUnknown インターフェイスと IDispatch インターフェイスを使用します。 また、RCW は、INew インターフェイスのすべてのメンバーを .NET クライアントに公開します。

RCW によって使用されるインターフェイスを次の表に一覧します。これらのインターフェイスは RCW でラップされたオブジェクトによって公開されます。

Interface

Description

IDispatch

COM オブジェクトのリフレクションによる遅延バインディングのためのインターフェイスです。

IErrorInfo

エラーの説明テキスト、ソース、ヘルプ ファイル、ヘルプ テキスト、およびそのエラーを定義したインターフェイスの GUID を提供します (.NET のクラスの場合は常に GUID_NULL)。

IProvideClassInfo

ラップされている COM オブジェクトが IProvideClassInfo を実装している場合は、RCW はこのインターフェイスから型情報を抽出して、より明確な型 ID を提供します。

IUnknown

オブジェクト ID、型の強制変換、および有効期間管理のためのインターフェイスです。

  • オブジェクト ID

    ランタイムは、各オブジェクトの IUnknown インターフェイスの値を比較して、COM オブジェクトを識別します。

  • 型の強制変換

    RCW は、QueryInterface メソッドによって実行される Dynamic Type Discovery を認識します。

  • 有効期間管理

    RCW は、QueryInterface メソッドを使用して、アンマネージ オブジェクトへの参照を取得し、ランタイムがそのラッパーに対してガベージ コレクションを実行するまで保持します。ガベージ コレクションによって、そのアンマネージ オブジェクトが解放されます。

RCW は、オプションで、次の表に一覧するインターフェイスを使用します。これらのインターフェイスは、RCW でラップされているオブジェクトによって公開されます。

Interface

Description

IConnectionPoint および IConnectionPointContainer

RCW は、コネクション ポイント イベント スタイルを公開するオブジェクトをデリゲート ベースのイベントに変換します。

IDispatchEx

クラスが IDispatchEx を実装している場合、RCW は IExpando を実装します。 IDispatchEx は、IDispatch を拡張したインターフェイスですが、IDispatch とは異なり、メンバーの列挙、追加、削除、および大文字と小文字を区別した呼び出しを実行できます。

IEnumVARIANT

列挙体をサポートする COM の型をコレクションとして処理することを可能にします。

参照

概念

ランタイム呼び出し可能ラッパー

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

その他の技術情報

アセンブリからタイプ ライブラリへの変換の要約