使用C#反射调用构造函数

我有以下情况:

class Addition{

public Addition(int a){ a=5; }

public static int add(int a,int b) {return a+b; }

}

我通过以下方式调用添加另一个类:

string s="add";

typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22

我需要一种类似于上述反射语句的方法,以使用创建一个类型为Addition的新对象 Addition(int a)

所以我有string 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是伟大的,如果你

只是 想调用构造函数,虽然。

以上是 使用C#反射调用构造函数 的全部内容, 来源链接: utcz.com/qa/424632.html

回到顶部