使用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