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