このセクションでは、コンパイラまたはツールが実行時にメタデータと共通中間言語 (CIL) を出力し、必要に応じてディスク上にポータブル実行可能ファイル (PE) ファイルを生成できるようにする、 System.Reflection.Emit 名前空間のマネージド型のセットについて説明します。 スクリプト エンジンとコンパイラは、この名前空間のプライマリ ユーザーです。 このセクションでは、 System.Reflection.Emit 名前空間によって提供される機能を リフレクション出力と呼びます。
リフレクション出力には、次の機能があります。
- DynamicMethod クラスを使用して実行時に軽量グローバル メソッドを定義し、デリゲートを使用して実行します。
- 実行時にアセンブリを定義し、それらを実行したり、ディスクに保存したりします。
- 実行時にアセンブリを定義し、それらを実行してからアンロードし、ガベージ コレクションでリソースを再利用できるようにします。
- 実行時に新しいアセンブリでモジュールを定義し、それらを実行してディスクに保存します。
- 実行時にモジュールの型を定義し、これらの型のインスタンスを作成して、そのメソッドを呼び出します。
- デバッガーやコード プロファイラーなどのツールで使用できる定義済みモジュールのシンボリック情報を定義します。
System.Reflection.Emit名前空間のマネージド型に加えて、メタデータ インターフェイスのリファレンス ドキュメントで説明されているアンマネージド メタデータ インターフェイスもあります。 マネージド リフレクション出力では、アンマネージド メタデータ インターフェイスよりも強力なセマンティック エラー チェックとメタデータの抽象化レベルが高くなります。
メタデータと CIL を操作するためのもう 1 つの便利なリソースは、共通言語インフラストラクチャ (CLI) のドキュメントです。特に、"Partition II: Metadata Definition and Semantics" と "Partition III: CIL Instruction Set" です。 ドキュメントは Ecma Web サイトでオンラインで入手できます。
リファレンス
OpCodes
メソッド本体の構築に使用できる CIL 命令コードをカタログ化します。
System.Reflection.Emit
動的メソッド、アセンブリ、および型を出力するために使用されるマネージド クラスが含まれています。
Type
マネージド リフレクションおよびリフレクション出力の型を表し、これらのテクノロジを使用するための鍵となる Type クラスについて説明します。
System.Reflection
メタデータとマネージド コードの探索に使用されるマネージド クラスが含まれています。
.NET