相互運用性を使用すると、アンマネージ コードへの既存の投資を維持して利用できます。 共通言語ランタイム (CLR) の制御下で実行される コードはマネージド コードであり、CLR の外部で実行されるコードは アンマネージ コードです。 COM、COM+、C++ コンポーネント、ActiveX コンポーネント、および Microsoft Windows API は、アンマネージ コードの例です。
.NET を使用すると、プラットフォーム呼び出しサービス、 System.Runtime.InteropServices 名前空間、C++ 相互運用性、COM 相互運用性 (COM 相互運用) を通じてアンマネージ コードとの相互運用性を実現できます。
プラットフォーム呼び出し
プラットフォーム呼び出し は、Microsoft Windows API などのダイナミック リンク ライブラリ (DLL) に実装されているアンマネージ関数をマネージド コードが呼び出すサービスです。 エクスポートされた関数を検索して呼び出し、必要に応じて相互運用境界を越えて引数 (整数、文字列、配列、構造体など) をマーシャリングします。
詳細については、「 アンマネージ DLL 関数の使用 」および 「プラットフォーム呼び出しを使用して WAV ファイルを再生する方法」を参照してください。
注
共通言語ランタイム (CLR) は、システム リソースへのアクセスを管理します。 CLR の外部にあるアンマネージ コードを呼び出すと、このセキュリティ メカニズムがバイパスされるため、セキュリティ リスクが発生します。 たとえば、アンマネージ コードでは、CLR セキュリティ メカニズムをバイパスして、アンマネージ コード内のリソースを直接呼び出す場合があります。 詳細については、「 .NET のセキュリティ」を参照してください。
C++ 相互運用機能
C++ 相互運用機能 (It Just Works (IJW) とも呼ばれます) を使用して、ネイティブ C++ クラスをラップできます。 C++ 相互運用機能を使用すると、C# または別の .NET 言語で作成されたコードにアクセスできます。 ネイティブ DLL または COM コンポーネントをラップする C++ コードを記述します。 他の .NET 言語とは異なり、Visual C++ には、同じアプリケーションおよび同じファイル内のマネージド コードとアンマネージド コードを有効にする相互運用性のサポートがあります。 その後、 /clr コンパイラ スイッチを使用して C++ コードをビルドし、マネージド アセンブリを生成します。 最後に、C# プロジェクトでアセンブリへの参照を追加し、他のマネージド クラスを使用する場合と同様に、ラップされたオブジェクトを使用します。
COM コンポーネントを C に公開する#
C# プロジェクトから COM コンポーネントを使用できます。 一般的な手順は次のとおりです。
- 使用する COM コンポーネントを見つけて登録します。 regsvr32.exe を使用して COM DLL を登録または登録解除します。
- COM コンポーネントまたはタイプ ライブラリへの参照をプロジェクトに追加します。 参照を追加すると、Visual Studio は、入力としてタイプ ライブラリを受け取る Tlbimp.exe (タイプ ライブラリ インポーター) を使用して.NET 相互運用機能アセンブリを出力します。 ランタイム呼び出し可能ラッパー (RCW) とも呼ばれるアセンブリには、タイプ ライブラリ内の COM クラスとインターフェイスをラップするマネージド クラスとインターフェイスが含まれています。 Visual Studio は、生成されたアセンブリへの参照をプロジェクトに追加します。
- RCW で定義されているクラスのインスタンスを作成します。 そのクラスのインスタンスを作成すると、COM オブジェクトのインスタンスが作成されます。
- 他のマネージド オブジェクトを使用する場合と同様に、オブジェクトを使用します。 オブジェクトがガベージ コレクションによって再利用されると、COM オブジェクトのインスタンスもメモリから解放されます。
詳細については、「 COM コンポーネントを .NET Framework に公開する」を参照してください。
C# を COM に公開する
COM クライアントは、正しく公開されている C# 型を使用できます。 C# 型を公開する基本的な手順は次のとおりです。
- C# プロジェクトに相互運用属性を追加します。 アセンブリ COM を表示するには、C# プロジェクトのプロパティを変更します。 詳細については、「 アセンブリ情報ダイアログ ボックス」を参照してください。
- COM タイプ ライブラリを生成し、COM を使用するために登録します。
C# プロジェクトのプロパティを変更して、COM 相互運用機能用に C# アセンブリを自動的に登録することができます。 Visual Studio では、マネージド アセンブリを入力として受け取る コマンド ライン スイッチを使用して、
/tlb
を使用してタイプ ライブラリを生成します。 このタイプ ライブラリでは、アセンブリ内のpublic
型について説明し、COM クライアントがマネージド クラスを作成できるようにレジストリ エントリを追加します。
詳細については、「 .NET Framework コンポーネントを COM に公開する 」および「 COM クラスの例」を参照してください。
こちらも参照ください
.NET