gpt4 book ai didi

c# - 使用反射调用具有参数的方法

转载 作者:行者123 更新时间:2023-11-30 21:26:57 24 4
gpt4 key购买 nike

我正在尝试使用反射调用具有 Params 的方法。它正在返回 System.Reflection.TargetParameterCountException

这只发生在方法参数中有 params 关键字的方法

Public static dynamic Function(JObject data, string PathFunction) {            

string MethodName = "MergeFields";
string FunctionsNamespace ="Test.Functions";

Object[] parameterArray = {"274-84-3068","5","1","Hugenberg","4","0"}

// Call Static class functions
Type type = Type.GetType(FunctionsNamespace);
Object obj = Activator.CreateInstance(type);
MethodInfo methodInfo = type.GetMethod(MethodName);
object st = methodInfo.Invoke(obj, parameterArray);
return st;

}



public static string MergeFields(params string[] data)
{
StringBuilder sb = new StringBuilder();
// code to be processed
return sb.ToString();
}

最佳答案

如果你有一个方法:

public static string MergeFields(params string[] data)

然后你调用:

MergeFields("a", "b", "c");

编译器 secret 地将其转换为:

MergeFields(new string[] { "a", "b", "c" });

但是当你使用反射时,你不会在这里得到编译器的帮助!您需要自己创建该字符串数组:

object[] parameterArray = new object[] { new string[] { "274-84-3068", "5", "1", "Hugenberg", "4", "0" } };

这里我们将向 MergeFields 传递一个参数,该参数是一个字符串数组。

关于c# - 使用反射调用具有参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58520734/

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