HUSKING - kotteri

技術系Note

【C#】インスタンスの動的生成(Type.Invokember)

※ TestClassというクラスは事前に作成しておく。

文字列からインスタンスを生成(動的にインスタンスを生成するのに便利)
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
    
// NameSpaceという名前空間のTestClassのインスタンスを生成(コンストラクタの引数にweekDaysを指定)
Type t = Type.GetType("NameSpace.TestClass");
var inst = (TestClass)t.InvokeMember(null, System.Reflection.BindingFlags.CreateInstance, null, null, new object[] { weekDays });
インスタンスを指定してメソッドを実行(クラス違いの同名メソッドを実行するのに便利)
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
    
// TestClassのexecuteというメソッドを実行(メソッドの引数にweekDaysを指定)
TestClass inst = new TestClass();
Type t = inst.GetType();
t.InvokeMember("execute", System.Reflection.BindingFlags.InvokeMethod, null, inst, new object[] { weekDays });