gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:37:51 24 4
gpt4 key购买 nike

我有以下场景:

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(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。如果您只是想要尽管调用构造函数。

关于c# - 使用 C# 反射调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3255697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com