動的アセンブリの考え方、System.Reflection.Emit 名前空間、ILGenerator、AssemblyBuilder、ModuleBuilder、TypeBuilder を使った型生成、生成した型の利用方法を整理します。
CIL の命令を、評価スタック、ローカル変数、引数、this 参照、分岐命令、ループ構造と関連付けて読み解きます。C# の制御構文が CIL でどう表現されるかを整理します。
CIL の宣言構文を通して、C# の型やメンバーがビルド後にどのようなメタデータとして表現されるのかをサンプル付きで整理します。
CIL を学ぶ意味、C# から CIL への変換、CIL の基本構造、ディレクティブ・属性・命令の違い、スタックベースの実行モデルを整理します。
dynamic を使うとコンパイル時ではなく実行時にメンバー解決できます。リフレクションとの違い、使いどころ、制限、式木との関係をサンプルコード付きで整理します。
リフレクション、属性、AssemblyLoadContext を組み合わせ、機能をモジュール化して後から追加できるアプリケーション構造をサンプルコード付きで整理します。
属性を使って型やメソッドにメタデータを付与し、リフレクションで読み取る方法を整理します。Obsolete、独自属性、AttributeUsage、アセンブリ属性まで扱います。
実行時に DLL を読み込み、型を探し、Activator.CreateInstance と MethodInfo.Invoke でメソッドを呼び出す方法を整理し、プラグイン構造への橋渡しを行います。
System.Type と System.Reflection を使って、型のメンバー情報を列挙する小さなメタデータビューアを作りながら、リフレクションの実践的な使い方を整理します。
Chapter 17 の導入として、型メタデータがなぜ必要なのか、System.Type で何が分かるのか、実行時に型情報・定義元アセンブリ・参照アセンブリを調べる方法を整理します。