カスタム マーシャリング

マーシャラーは、基本的に、新旧のインターフェイスの機能間における橋渡しの役割を行います。 カスタム マーシャリングによって、古いインターフェイスを使用するように設計されたクライアントを、新しいインターフェイスだけを実装するサーバーで使用できるようになります。 また、カスタム マーシャリングによって、新しいインターフェイスを使用するように設計されたクライアントを、古いインターフェイスを公開するサーバーで使用できるようになります。

相互運用マーシャラーを使用する代わりに、異なるマーシャリングの動作を導入したり、別の方法でコンポーネント オブジェクト モデル (COM: Component Object Model) にインターフェイスを公開したりする、インターフェイスのためのカスタム マーシャラーを設計できます。 カスタム マーシャラーを使用することで、新しい .NET Framework コンポーネントと既存の COM コンポーネントの相違を最小限にすることができます。

たとえば、INew というマネージ インターフェイスを開発するとします。 このインターフェイスは、標準の COM 呼び出し可能ラッパー (CCW: COM Callable Wrapper) を経由して COM に公開される場合、マネージ インターフェイスと同じメソッドを持ち、相互運用マーシャラー内に構築されているマーシャリング規則を使用します。 また、IOld という一般的な COM インターフェイスが既に INew インターフェイスと同じ機能を提供しているとします。 カスタム マーシャラーを導入することで、単純に呼び出しを INew インターフェイスのマネージ実装にデリゲートする IOld のアンマネージ実装を提供できます。 カスタム マーシャラーの基本的な役割は、マネージ インターフェイスとアンマネージ インターフェイス間の橋渡しをすることです。

カスタム マーシャラーはディスパッチのみのインターフェイスでマネージ側からアンマネージ側に呼び出す場合には呼び出されないことに注意してください。

関連トピック

Title

Description

マーシャリング型の定義

カスタム マーシャラーのセットアップに関連するインターフェイスを準備する方法について説明します。

ICustomMarshaler インターフェイスの実装

カスタム マーシャラーを準備するときのオプションについて説明します。

代替マーシャラーの使用

MarshalAsAttribute 属性を使用してカスタム マーシャラーを挿入する方法について説明します。

相互運用マーシャリング

COM 相互運用機能とプラットフォーム呼び出しによるマーシャリングについて説明します。

Reference

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute