ランタイム呼び出し可能ラッパーのカスタマイズ
共通言語ランタイムは、相互運用機能アセンブリに含まれるメタデータからランタイム呼び出し可能ラッパー (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 呼び出し可能ラッパーのカスタマイズ