C# プログラミング ガイド
相互運用性 (C# プログラミング ガイド)

相互運用機能によって、アンマネージ コードへの既存の投資を保護し活用できます。共通言語ランタイム (CLR: Common Language Runtime) の制御の下で動作するコードを "マネージ コード"、CLR の外部で動作するコードを "アンマネージ コード" と言います。アンマネージ コードの例としては、COM、COM+、C++ の各コンポーネント、ActiveX コンポーネント、および Win32 API があります。

.NET Framework は、プラットフォーム呼び出しサービス、System.Runtime.InteropServices 名前空間、CLR、および COM 相互運用性 (COM interop) を通じてアンマネージ コードとの相互運用を可能にします。

  • マネージ コードからアンマネージ API を使用するには、プラットフォーム呼び出しを使用する方法と、C++ の IJW (It Just Works) を使用する方法の 2 つがあります。プラットフォーム呼び出しを使用すると、マネージ コードで、Win32 API やカスタム DLL などのアンマネージ ダイナミック リンク ライブラリ (DLL) からエクスポートされた関数を呼び出すことができます。CLR は、DLL の読み込みとパラメータのマーシャリングを処理します。パフォーマンスを向上させるには、プラットフォーム呼び出しを使用するよりも、.NET Framework に等価の関数が用意されていないかどうかを確認してください。詳細については、「プラットフォーム呼び出しの詳細」を参照してください。

  • COM 相互運用機能を使用すると、マネージ コードは、COM インターフェイスと COM クライアントを通じて COM オブジェクトと対話できます。COM コンポーネントは、次の 2 つの方法でマネージ コードから使用できます。

    • OLE オートメーション互換の COM コンポーネントを呼び出す場合は、COM 相互運用機能または tlbimp.exe を使用します。CLR は、COM コンポーネントのアクティブ化とパラメータのマーシャリングを処理します。

    • IDL ベースの COM コンポーネントの場合は、IJW と C++ を使用します。IUnknownIDispatch、および他の標準 COM インターフェイスを実装する各パブリック マネージ クラスは、COM 相互運用機能を通じて、アンマネージ コードからすべて呼び出すことができます。詳細については、「Microsoft .NET/COM Migration and Interoperability」を参照してください。

詳細については、「アンマネージ コードとの相互運用」および「Improving Interop Performance」を参照してください。

PInvoke と COM 相互運用機能はいずれもマーシャリングを使用して、整数、文字列、配列、構造体、ポインタなどの引数をマネージ コードとアンマネージ コード間で変換します。詳細については、「相互運用マーシャリングの概要」を参照してください。

関連項目

相互運用性の概要 (C# プログラミング ガイド)

方法 : COM 相互運用機能を使用して Excel スプレッドシートを作成する (C# プログラミング ガイド)

方法 : プラットフォーム呼び出しを使用して Wave ファイルを再生する (C# プログラミング ガイド)

方法 : COM 相互運用機能を使用して Word によるスペル チェックを行う (C# プログラミング ガイド)

COM クラスの例 (C# プログラミング ガイド)

方法 : Excel 用のオートメーション アドインとしてマネージ コードを使用する (C# プログラミング ガイド)

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 10.5.7 外部メソッド

  • 17.5 相互運用の属性

  • 18.8 動的なメモリ割り当て

参照

概念

C# プログラミング ガイド

その他の技術情報

.NET Compact Framework の相互運用性

タグ :


Page view tracker