動的メソッドおよびアセンブリの出力
ここでは、System.Reflection.Emit 名前空間のマネージ型について説明します。これらのマネージ型により、コンパイラまたはツールはメタデータや Microsoft Intermediate Language (MSIL) を実行時に出力できます。また、ポータブル実行可能 (PE) ファイルをディスク上に生成することもできます。 この名前空間を使用する主な機能は、スクリプト エンジンとコンパイラです。 ここでは、リフレクション出力と呼ばれる System.Reflection.Emit 名前空間の機能について説明します。
リフレクション出力は、次の機能を提供します。
実行時に DynamicMethod クラスを使用して軽量のグローバル メソッドを定義し、デリゲートを使用してそのメソッドを実行します。
実行時にアセンブリを定義し、次に、アセンブリを実行するか、ディスクに保存します。
実行時にアセンブリを定義し、アセンブリを実行してから、アセンブリをアンロードして、ガベージ コレクションがアセンブリのリソースをクリアできるようにします。
実行時に新しいアセンブリのモジュールを定義し、次に、モジュールを実行するか、ディスクに保存します。
実行時にモジュール内の型を定義し、その型のインスタンスを作成してメソッドを呼び出します。
デバッガーまたはコード プロファイラーなどのツールで使用できる、定義されたモジュールのシンボリック情報を定義します。
System.Reflection.Emit 名前空間のマネージ型に加えて、アンマネージ メタデータ インターフェイスもあります。これについては、メタデータ インターフェイス に関するリファレンス ドキュメントを参照してください。 マネージ リフレクション出力は、アンマネージ メタデータ インターフェイスよりも強力なセマンティック エラー チェック機能、より高水準なメタデータの抽象化クラスを提供します。
メタデータと MSIL を使用する際に役立つリソースとしては、他に、共通言語基盤 (CLI: Common Language Infrastructure) のドキュメント、特に「Partition II: Metadata Definition and Semantics」と「Partition III: CIL Instruction Set」などもあります。 ドキュメントは、MSDN および Ecma Web サイトからオンラインで入手できます。
このセクションの内容
リフレクション出力の抽象化クラス
アセンブリと型、メソッドとメソッド パラメーター、イベント、コンストラクター、プロパティなどを定義するために使用できるリフレクション出力クラスを示し、各クラスについて説明します。動的な型生成のための収集可能なアセンブリ
実行コードから到達できる型がアセンブリにない場合に、アンロード、およびガベージ コレクションによるクリアを行うことができる動的アセンブリの作成と使用について説明します。リフレクション出力による動的メソッドのシナリオ
軽量の動的メソッドの定義と使い方について説明します。リフレクション出力による動的アセンブリのシナリオ
動的アセンブリで定義されている動的モジュールを出力するという、リフレクション出力の中心的なシナリオについて説明します。リフレクション出力のアプリケーション シナリオ
Web ブラウザーでのスクリプトの実行、ASP.NET ページでのスクリプトの実行、正規表現のコンパイルなどを含む、リフレクション出力でサポートされるアプリケーション シナリオについて説明します。リフレクション出力のセキュリティ関連事項
リフレクション出力を使用した動的アセンブリの作成時のセキュリティ関連事項について説明します。リフレクション出力の使用
リフレクション出力を使用して実行できる基本タスクについて説明し、軽量の動的メソッドの生成やジェネリック型とジェネリック メソッドの出力に関する方法を説明したトピックを紹介します。リフレクション出力の参照情報
リフレクション出力に関するその他の資料を示します。
参照
OpCodes
メソッド本体の構築に使用できる MSIL 命令コードのカタログを作成します。System.Reflection.Emit
動的メソッド、アセンブリ、および型の出力に使用するマネージ クラスが含まれます。Type
Type クラスについて説明します。このクラスは、マネージ リフレクションとリフレクション出力の型を表し、これらのテクノロジを使用するうえで重要なクラスです。System.Reflection
メタデータとマネージ コードの探索に使用するマネージ クラスが含まれます。
関連項目
リフレクション
メタデータとマネージ コードの探索方法について説明します。共通言語ランタイムのアセンブリ
.NET Framework のアセンブリの概要を説明します。