gpt4 book ai didi

c# - 获取未处理的异常 : System. Reflection.TargetParameterCountException:参数计数不匹配

转载 作者:行者123 更新时间:2023-11-30 20:22:45 26 4
gpt4 key购买 nike

我收到参数计数不匹配异常:

Getting Unhandled Exception: System.Reflection.TargetParameterCountException: Parameter count mismatch.

代码:

class Program
{
public static void Main()
{
ArrayList CustomerList = new ArrayList();
CustomerList.Add("Robinson");
CustomerList.Add("Pattison");
CustomerList.Add("Todd");

object[] obj = (object[])CustomerList.ToArray(typeof(object));
Assembly executingAssembly = Assembly.GetExecutingAssembly();
Type customerType = executingAssembly.GetType("LateBinding.Customer");
object customerInstance = Activator.CreateInstance(customerType);
MethodInfo method = customerType.GetMethod("printCustomerDetails");
string customerObject = (string)method.Invoke(customerInstance, obj);
Console.WriteLine("Value is : {0}", customerObject);
}
}
public class Customer
{
public string printCustomerDetails(object[] parameters)
{
string CustomerName = "";
foreach (object customer in parameters)
{
CustomerName = CustomerName + " " + customer;
}
return CustomerName.Trim();
}
}

最佳答案

问题在这里:

string customerObject = (string)method.Invoke(customerInstance, obj);

...和方法:

public string printCustomerDetails(object[] parameters)

MethodInfo.Invoke(...) 的输入参数(第二个)参数overload 是一个参数数组,而你的 printCustomerDetails方法有一个参数,它是一组对象 object[] , 所以你需要打电话 Invoke这样:

method.Invoke(customerInstance, new [] { obj });

关于 ArrayList 的建议已过时

不要使用 ArrayList ,它来自 .NET 1.x 时代。从 .NET 2.0 开始,您需要使用 System.Collections.Generic 中的通用集合命名空间(例如 List<T>HashSet<T>Queue<T> ...)

如果你需要动态创建数组,我建议你应该使用List<object>而不是过时的 ArrayList获得完整的 LINQ 和 LINQ 扩展方法支持,以及自 .NET 2.0 以来更新的通用列表上的列表类型集合的其他改进(过去也是如此!现在我们在 .NET 4.5 中)。

关于c# - 获取未处理的异常 : System. Reflection.TargetParameterCountException:参数计数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557155/

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