gpt4 book ai didi

c# - MethodInfo.Invoke 为可变数量的参数抛出异常

转载 作者:行者123 更新时间:2023-12-02 04:34:34 24 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/

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