5章動的オブジェクトとリフレクションによる実装
リフレクションを使用すると、型の内容を確認して、メンバーの詳細情報を取得することができるようになります。この機能はオブジェクトに対する操作を可能な限りユーザーに許容して、何かしらの自動化処理を実行するようなライブラリやツールを作成する場合に有用です。リフレクションを使用する具体例としては、例えばユニットテストフレームワークなどがあります。「レシピ3.1 ユニットテストの作成」で説明したように、ユニットテストはテストを実行するメソッドに対して属性が指定されているクラスを処理対象にします。ユニットテストフレームワークはリフレクションを使用してテスト対象のクラスやテスト用のメソッドを探し、それらをテストします。
本章の例では、レポートを動的に作成するアプリケーションを想定しています。このアプリケーションはクラスの属性を読み取り、型のメンバーにアクセスして、それらを実行します。具体的な方法については最初の4つの節で説明します。
リフレクションの他にも、C#には動的オブジェクト(dynamic object)と呼ばれる機能があります。C#では、強く型付けされたコードを作成することがほとんどで、そのために生産性やメンテナンス性を高く維持できるという利点があります。一方で、C#のdynamic
キーワードを使用するとオブジェクトが特定の構造を持っているかのようなコードを記述できるようになります。この機能はJavaScriptやPythonのような動的プログラミングをサポートする言語とよく似たもので、オブジェクトのメンバーを使用する際にはそのオブジェクトのメンバーが定義されたドキュメントを参考にしながらコードを作成することになります。つまりドキュメントで定義されたメンバーだけが使えるというわけです。動的コードを使用することによって、C#でもこれらの言語と同じことができるようになります。 ...
Get C#クックブック ―プロフェッショナル開発者のためのモダンレシピ 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.