リフレクション機能を使うと、取得した型情報を使ってメソッドの呼び出しやフィールドの取得・設定などのインスタンスの操作をすることができます。 この際に、操作するメソッドやフィールド・プロパティは文字列によって指定することができます。 これにより、型に依存しない汎用的な処理を記述したり、実行時まで型が決定していないインスタンスに対する操作を行うといったことができます。
リフレクション機能を使ってインスタンスの生成・操作を行う
using System;
using System.Reflection;
class Account {
public string Name { get; set; }
}
class Sample {
static void Main()
{
// クラス名Accountの型情報を取得する
var t = Type.GetType("Account");
// 型情報からインスタンスを作成する
var inst = Activator.CreateInstance(t);
// Nameプロパティを取得する
var p = t.GetProperty("Name");
// プロパティに値を設定する
p.SetValue(inst, "Alice", null);
// プロパティの値を取得して表示する
Console.WriteLine("Name = {0}", p.GetValue(inst, null));
}
}
実行結果
Name = Alice
このような操作については§.メンバの呼び出しで解説します。