選択したインターフェイスのマーシャリング
ランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) の主要な目標は、マネージ プログラミング モデルとアンマネージ プログラミング モデルの相違を隠ぺいすることです。 次の図に示すように、RCW は、選択された COM のインターフェイスを .NET のクライアントには公開せずに使用し、シームレスな状態遷移を作成します。
COM インターフェイスとランタイム呼び出し可能ラッパー
RCW は、事前バインディングのオブジェクトとして作成されたときは、特定の型になります。 RCW は、COM オブジェクトが実装しているインターフェイスを実装し、そのオブジェクトのインターフェイスからメソッド、プロパティ、およびイベントを公開します。 この図では、RCW は INew インターフェイスを公開しますが、IUnknown インターフェイスと IDispatch インターフェイスを使用します。 また、RCW は、INew インターフェイスのすべてのメンバーを .NET クライアントに公開します。
RCW によって使用されるインターフェイスを次の表に一覧します。これらのインターフェイスは RCW でラップされたオブジェクトによって公開されます。
インターフェイス |
説明 |
---|---|
IDispatch |
COM オブジェクトのリフレクションによる遅延バインディングのためのインターフェイスです。 |
IErrorInfo |
エラーの説明テキスト、ソース、ヘルプ ファイル、ヘルプ テキスト、およびそのエラーを定義したインターフェイスの GUID を提供します (.NET のクラスの場合は常に GUID_NULL)。 |
IProvideClassInfo |
ラップされている COM オブジェクトが IProvideClassInfo を実装している場合は、RCW はこのインターフェイスから型情報を抽出して、より明確な型 ID を提供します。 |
IUnknown |
オブジェクト ID、型の強制変換、および有効期間管理のためのインターフェイスです。
|
RCW は、オプションで、次の表に一覧するインターフェイスを使用します。これらのインターフェイスは、RCW でラップされているオブジェクトによって公開されます。
インターフェイス |
説明 |
---|---|
IConnectionPoint および IConnectionPointContainer |
RCW は、コネクション ポイント イベント スタイルを公開するオブジェクトをデリゲート ベースのイベントに変換します。 |
IDispatchEx |
クラスが IDispatchEx を実装している場合、RCW は IExpando を実装します。 IDispatchEx は、IDispatch を拡張したインターフェイスですが、IDispatch とは異なり、メンバーの列挙、追加、削除、および大文字と小文字を区別した呼び出しを実行できます。 |
IEnumVARIANT |
列挙体をサポートする COM の型をコレクションとして処理することを可能にします。 |