13章リフレクション
CLRは、プログラムで定義して使う型についてよく知っています。アセンブリは詳細なメタデータを提供し、プライベートな実装詳細を含むすべての型の各メンバを表す必要があります。CLRは、この情報を用いてJITコンパイルやガベージコレクションといった重要な機能を実行します。しかし、この情報はCLRだけの秘密にしているわけではありません。リフレクションAPIを利用してこの詳細な型情報にアクセスできます。これにより、ランタイムでアクセス可能な情報をコードからも参照できます。さらに、リフレクションを使った操作ができます。例えば、メソッドを表すリフレクションオブジェクトではメソッド名やシグネチャを取得できるだけでなく、メソッドを呼び出すこともできます。また、さらに進んで実行時にコードを生成することもできます。
リフレクションは拡張可能なフレームワークで特に便利です。リフレクションを利用し、コードの構造に基づいて実行時にフレームワークの動作を変更できるためです。例えば、Visual Studioの[プロパティ]パネルは、リフレクションを利用してコンポーネントでどのようなpublicプロパティが利用可能かを判断します。そのため、UI要素のようなデザインの外観に出現するコンポーネントを作成する場合、編集のためにプロパティを利用できるようにするのに特殊なことをする必要はありません。Visual Studioはプロパティを自動的に発見します。
必要な情報を自動的に発見できる多くのリフレクションベースのフレームワークでは、コンポーネントに対して明示的にその情報を付与できます。例えば、[プロパティ]パネルでの編集をサポートするために特別なことをする必要はありませんが、分類、説明、編集メカニズムを必要に応じてカスタマイズできます。一般に、このようなカスタマイズは ... |
Get プログラミングC# 第8版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.