クラスに定義されているメソッドを取得する
まずはtypeofを使ってインスタンスを作成したクラスを取得します。
using System;// Type型に必要 using System.Reflection;// MeshodInfo型とかに必要 Type type = typeof(T);// Tは調べたいクラス Type type = this.GetType();// 自分自身のクラスを取得するにはこっち
取得したクラスからメソッドを探して、MethodInfo型に入れます。該当するメソッドが無い場合はnullが返ります。
MethodInfo method = type.GetMethod("-メソッド名-");
GetMethods()でメソッドをMethodInfo型の配列でまとめて取得できます。MethodInfo型はNameプロパティでメソッド名を文字列で取得できまので、メソッドの名前一覧なども作成できます。
取得したメソッドを使う
MethodInfo型で取得したメソッドは、Invokeメソッドで使用することができます。メソッドをもったクラスのインスタンスを第一引数、メソッドに渡す引数を第二引数にします(Object型の配列)。なければnull。
method.Invoke(this, null);
クラスに定義されているプロパティを取得する
先にPropertyInfo型をGetPropertyで取得します。それからPropertyInfoからGetメソッドとSetメソッドを取得します。メソッドの使い方は上記メソッドと同じです。
Type type = this.GetType();// クラスを取得 PropertyInfo property = type.GetProperty("-プロパティ名-");// プロパティを取得 MethodInfo getter = property.GetGetMethod();// Getメソッドを取得 MethodInfo setter = property.GetSetMethod();// Setメソッドを取得 getter.Invoke(this, null);// Getメソッドを実行 setter.Invoke(this, null);// Setメソッドを実行