次の方法で共有


相互運用性の概要

相互運用性を使用すると、アンマネージ コードへの既存の投資を維持して利用できます。 共通言語ランタイム (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 コンポーネントを使用できます。 一般的な手順は次のとおりです。

  1. 使用する COM コンポーネントを見つけて登録します。 regsvr32.exe を使用して COM DLL を登録または登録解除します。
  2. COM コンポーネントまたはタイプ ライブラリへの参照をプロジェクトに追加します。 参照を追加すると、Visual Studio は、入力としてタイプ ライブラリを受け取る Tlbimp.exe (タイプ ライブラリ インポーター) を使用して.NET 相互運用機能アセンブリを出力します。 ランタイム呼び出し可能ラッパー (RCW) とも呼ばれるアセンブリには、タイプ ライブラリ内の COM クラスとインターフェイスをラップするマネージド クラスとインターフェイスが含まれています。 Visual Studio は、生成されたアセンブリへの参照をプロジェクトに追加します。
  3. RCW で定義されているクラスのインスタンスを作成します。 そのクラスのインスタンスを作成すると、COM オブジェクトのインスタンスが作成されます。
  4. 他のマネージド オブジェクトを使用する場合と同様に、オブジェクトを使用します。 オブジェクトがガベージ コレクションによって再利用されると、COM オブジェクトのインスタンスもメモリから解放されます。

詳細については、「 COM コンポーネントを .NET Framework に公開する」を参照してください。

C# を COM に公開する

COM クライアントは、正しく公開されている C# 型を使用できます。 C# 型を公開する基本的な手順は次のとおりです。

  1. C# プロジェクトに相互運用属性を追加します。 アセンブリ COM を表示するには、C# プロジェクトのプロパティを変更します。 詳細については、「 アセンブリ情報ダイアログ ボックス」を参照してください。
  2. COM タイプ ライブラリを生成し、COM を使用するために登録します。 C# プロジェクトのプロパティを変更して、COM 相互運用機能用に C# アセンブリを自動的に登録することができます。 Visual Studio では、マネージド アセンブリを入力として受け取る コマンド ライン スイッチを使用して、/tlb を使用してタイプ ライブラリを生成します。 このタイプ ライブラリでは、アセンブリ内の public 型について説明し、COM クライアントがマネージド クラスを作成できるようにレジストリ エントリを追加します。

詳細については、「 .NET Framework コンポーネントを COM に公開する 」および「 COM クラスの例」を参照してください。

こちらも参照ください