使用C#reflection调用构造函数
我有以下情况:
class Addition{ public Addition(int a){ a=5; } public static int add(int a,int b) {return a+b; } }
我打电话给另一个classjoin:
string s="add"; typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22
我需要一种类似于上述reflection语句的方法来创build一个使用Addition(int a)
types的新对象,
所以我有strings= "Addition"
,我想创build一个新的对象使用reflection。
这可能吗?
我不认为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
是很好的。
是的,你可以使用Activator.CreateInstance