リフレクション、属性、AssemblyLoadContext を組み合わせ、機能をモジュール化して後から追加できるアプリケーション構造をサンプルコード付きで整理します。
属性を使って型やメソッドにメタデータを付与し、リフレクションで読み取る方法を整理します。Obsolete、独自属性、AttributeUsage、アセンブリ属性まで扱います。
実行時に DLL を読み込み、型を探し、Activator.CreateInstance と MethodInfo.Invoke でメソッドを呼び出す方法を整理し、プラグイン構造への橋渡しを行います。
System.Type と System.Reflection を使って、型のメンバー情報を列挙する小さなメタデータビューアを作りながら、リフレクションの実践的な使い方を整理します。
Chapter 17 の導入として、型メタデータがなぜ必要なのか、System.Type で何が分かるのか、実行時に型情報・定義元アセンブリ・参照アセンブリを調べる方法を整理します。
クラスライブラリを NuGet パッケージ化する方法、パッケージ参照、dotnet publish による発行、フレームワーク依存型と自己完結型の違い、.NET がアセンブリを見つける仕組みを整理します。
クラスライブラリを作成してクライアントアプリから利用する基本手順、リフレクションによるマニフェスト確認、簡単な中間言語の観察、internal 型を別アセンブリへ公開する方法を整理します。
構成ファイルの役割、複数設定ファイルの読み込み、オブジェクトへのバインド、追加の設定ソースを使う方法をサンプルコード付きで整理します。
アセンブリが単なる DLL ではなく、実行コード、型メタデータ、参照情報、リソースを含む自己記述的な単位であることを整理し、クラスライブラリ、コンソールアプリ、対象フレームワークの違いを説明します。
Chapter 16 の前半として、カスタム名前空間の定義、名前衝突の回避、エイリアス、入れ子名前空間、プロジェクトの既定名前空間、アセンブリの基本的な役割を整理します。