次のシナリオがあります。
_class Addition{
public Addition(int a){ a=5; }
public static int add(int a,int b) {return a+b; }
}
_
私は別のクラスでaddを呼び出しています:
_string s="add";
typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22
_
Addition(int a)
を使用して、Addition型の新しいオブジェクトを作成するには、上記のリフレクションステートメントと同様の方法が必要です。
文字列_s= "Addition"
_があるので、リフレクションを使用して新しいオブジェクトを作成します。
これは可能ですか?
私はGetMethod
がそれを行うとは思わない、いいえ-しかし GetConstructor
はそうするでしょう。
using System;
using System.Reflection;
class Addition
{
public Addition(int a)
{
Console.WriteLine("Constructor called, a={0}", a);
}
}
class Test
{
static void Main()
{
Type type = typeof(Addition);
ConstructorInfo ctor = type.GetConstructor(new[] { typeof(int) });
object instance = ctor.Invoke(new object[] { 10 });
}
}
編集:はい、Activator.CreateInstance
も機能します。物事をより細かく制御したい場合は、GetConstructor
を使用します。パラメータ名などを見つけます。Activator.CreateInstance
は、justコンストラクターを呼び出したい場合に最適です。
はい、使用できます Activator.CreateInstance