標準ラッパーのカスタマイズ

このトピックでは、標準のランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrappers) および COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) をカスタマイズするために使用するプロセスを説明します。

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

.NET のクライアントが COM オブジェクトをアクティブにすると、ランタイムは、ランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) のインスタンスを生成してその COM 型をラップします。 次の図に示すように、ランタイムは、インポートされた COM タイプ ライブラリから取得したメタデータを使用して RCW を生成します。 ラッパーは、相互運用マーシャリング サービスによって設定された規則に基づいてデータをマーシャリングします。

RCW の生成とメソッドの呼び出し

標準ラッパーのカスタマイズ

RCW は 2 とおりの方法でカスタマイズできます。 インターフェイス定義言語 (IDL: Interface Definition Language) のソース コードを変更できる場合は、タイプ ライブラリ ファイル (TLB) の属性を適用し、タイプ ライブラリをインポートできます。 もう 1 つの方法は、インポートした型に相互運用機能専用の属性を適用し、新しいアセンブリを生成する方法です。 標準の RCW のカスタマイズのサポートは、相互運用機能専用の属性によって制限されます。 手順については、「方法 : ランタイム呼び出し可能ラッパーをカスタマイズする」を参照してください。

COM 呼び出し可能ラッパー

COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) は、COM に対して .NET Framework のオブジェクトを公開します。 マネージ プロジェクトをアセンブリ DLL にコンパイルすると、アセンブリ内のそれぞれの型を記述するのに必要なメタデータが自動的に作成されます。 COM クライアントがマネージ オブジェクトをアクティブにするたびに、ランタイムは、このメタデータを使用して CCW を作成します。

CCW をカスタマイズするには、次の図に示すように、マネージ ソース コードに相互運用機能専用の属性を適用し、そのソースをアセンブリにコンパイルします。 この例では、Tlbexp.exe によってマネージ型が COM に変換されます。

CCW の生成とメソッドの呼び出し

標準ラッパーのカスタマイズ

コードに属性を適用することにより、相互運用マーシャリング サービスの範囲内でインターフェイスの動作とデータ マーシャリングの動作を変更できます。 たとえば、引数としてメソッドに渡されるデータの書式を制御できます。 また、アセンブリ内のどの型を COM に公開するかを制御することもできます。

参照

処理手順

方法 : ランタイム呼び出し可能ラッパーをカスタマイズする

参照

Tlbimp.exe (タイプ ライブラリ インポーター)

Ildasm.exe (MSIL 逆アセンブラー)

概念

COM ラッパー

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

COM 呼び出し可能ラッパー

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

その他の技術情報

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

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