c#のリフレクション
アセンブリの操作
アセンブリの操作をおこなうためににはAssemblyクラスのインスタンスを取得する。
(1)実行中のアセンブリの取得。
(2)クラスが定義されている読み込み済みのアセンブリの取得。
(3)アセンブリの表示名を指定してアセンブリを読み込む。
アセンブリ情報の表示。
Assemblyに含まれる 型情報の一覧の表示。
アセンブリ内で定義されているパブリック型の一覧の表示。
アセンブリが参照するすべてのアセンブリの AssemblyName オブジェクトの一覧の表示。
クラスの型情報(Type)取得
JavaのClass クラスに相当するのはTypeクラスです。
Typeクラスのインスタンスを取得するには以下の3の方法がある。
(1)typeof演算子。(クラスよりTypeクラスのインスタンスの取得を取得する。)
(2)クラスのインスタンスより取得
(3)クラス名(文字列)より取得
クラスの型情報(Type)が取得できればこれを基に取得したクラスの様々な操作や情報の取得が可能になる。
クラスの情報の取得
以下のようなコードにてクラスに関する情報を取得して表示できる。
スーパクラスの継承関係の取得
以下の再帰メソッドにてインターフェースおよびインターフェースの継承関係を表示できる。
インナークラスの列挙。 BindingFlagsを指定することでメンバと型の検索方法を指定できる。
カスタム属性(javaのアノテーションに相当)の列挙。
クラスのインスタンスの生成
アセンブリよりTestClassクラスのインスタンスを作成。
インスタンス作成時にコンストラクタへ引数を渡す。
フィールドの操作
フィールドの列挙とフィールド情報の表示。
メソッドの操作
メソッドの列挙とメソッド情報の表示。
メソッドオブジェクトの取得と実行。
プロパティの操作
プロパティの列挙とプロパティ情報の表示。
プロパティ値の参照。
プロパティの値の設定。