次の方法で共有


ランタイム呼び出し可能ラッパーのカスタマイズ

共通言語ランタイムは、相互運用機能アセンブリに含まれるメタデータからランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) を生成します。他のアセンブリとは異なり、相互運用機能アセンブリはタイプ ライブラリをインポートすることによって生成されます。一般に、インポート プロセスから生成される相互運用機能アセンブリは適切ですが、カスタム RCW を生成するために相互運用機能アセンブリを修正できる (または修正する必要がある) こともあります。

RCW をカスタマイズする必要が生じる状況を次にいくつか示します。

  • 1 つ以上の型が追加のマーシャリング情報を必要とする場合。

  • タイプ ライブラリに、マーシャラが認識できない特殊化された型が多数含まれている場合。

  • 大きなタイプ ライブラリに、アプリケーションに必要のない型が含まれる可能性がある場合。マネージ ソース コードから相互運用機能アセンブリを作成することで、不要な型が配置されないようにすることができます。

  • 大きなタイプ ライブラリの一部の型を含む RCW ソース コードを用意することで、不要な型が配置されないようにすることができる場合。

次の図に示すように、ラッパー (図の左側) をカスタマイズしなくても、タイプ ライブラリをマネージ DLL としてインポートできます。または、カスタム ラッパーを作成することもできます。

インポートしたタイプ ライブラリに含まれるマーシャリング情報

タイプ ライブラリ インポータ

追加のまたは別のマーシャリング命令によってランタイム呼び出し可能ラッパー (RCW: Runtime Callable Wrapper) をカスタマイズする必要がある場合には、2 つの選択肢があります。

  • 相互運用機能アセンブリを編集します。問題のある構文を検索して、それを代わりの構文と置き換えます。このオプションは、マーシャリングの変更が小規模な場合に適します。

  • 既存のインターフェイス定義言語 (IDL: Interface Definition Language) ファイルまたはタイプ ライブラリに基づいて、ラッパーを手動で作成します。手動で COM の型を宣言することは、タイプ ライブラリ インポータ (Tlbimp.exe)、相互運用マーシャラの既定の動作、および COM に関する知識が必要となるため、難しい作業になります。このアプローチが適するのは、特殊化された型を含むライブラリ全体がある場合、または RCW のソース コードが必要な場合です。

参照

処理手順

方法 : 相互運用機能アセンブリを編集する
方法 : ラッパを手動で作成する

概念

COM のデータ型
COM 呼び出し可能ラッパーのカスタマイズ

その他の技術情報

COM 相互運用機能によるデータのマーシャリング