gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:02:17 24 4
gpt4 key购买 nike

在一个非常简单的类中,如下所示,

class Program 
{

public Program(int a, int b, int c)
{
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
}
}

我使用反射来调用构造函数

像这样的……

   var constructorInfo = typeof(Program).GetConstructor(new[] { typeof(int), typeof(int),      typeof(int) });
object[] lobject = new object[] { };
int one = 1;
int two = 2;
int three = 3;
lobject[0] = one;
lobject[1] = two;
lobject[2] = three;

if (constructorInfo != null)
{
constructorInfo.Invoke(constructorInfo, lobject.ToArray);
}

但我收到一条错误消息“对象与目标类型构造函数信息不匹配”。

非常感谢任何帮助/评论。提前致谢。

最佳答案

你不需要传递 constructorInfo作为参数,只要您调用构造函数,而不是对象的实例方法。

var constructorInfo = typeof(Program).GetConstructor(
new[] { typeof(int), typeof(int), typeof(int) });
if (constructorInfo != null)
{
object[] lobject = new object[] { 1, 2, 3 };
constructorInfo.Invoke(lobject);
}

对于 KeyValuePair<T,U> :

public Program(KeyValuePair<int, string> p)
{
Console.WriteLine(string.Format("{0}:\t{1}", p.Key, p.Value));
}

static void Main(string[] args)
{
var constructorInfo = typeof(Program).GetConstructor(
new[] { typeof(KeyValuePair<int, string>) });
if (constructorInfo != null)
{
constructorInfo.Invoke(
new object[] {
new KeyValuePair<int, string>(1, "value for key 1") });
}

Console.ReadLine();
}

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

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