gpt4 book ai didi

c# - MethodInfo.Invoke 因参数数量可变而引发异常

转载 作者:行者123 更新时间:2023-12-02 21:31:19 25 4
gpt4 key购买 nike

我的代码尝试使用 MethodInfo.Invoke 调用具有可变数量参数的多个方法,但调用会引发 ArgumentException。造成此问题的原因是什么以及如何解决它?

被调用方法的方法签名如下所示:

private static string MethodBeingCalled(params string[] args) 
{
//do stuff
return stringToReturn;
}

调用这些方法的代码行如下所示:

string valueReturned = method.Invoke(obj, new object[] { "01" }).ToString();

此行抛出 ArgumentException:

Object of type 'System.String' cannot be converted to type 'System.String[]'.

当我更改 MethodBeingCalled 以采用固定的参数列表(即:MethodBeingCalled(string arg))时,一切正常。

最佳答案

params 实际上是编译器的一种解决方法。后面,参数的真实类型是一个数组。因此,当您执行以下操作时:method.Invoke(obj, new object[] { "01"}),这是行不通的。你需要这样做:

method.Invoke(obj, new object[] { new string[] {"01"} })

这应该有效。

关于c# - MethodInfo.Invoke 因参数数量可变而引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235490/

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