首页 > 解决方案 > 传递动态方法时出错:不能使用方法组作为参数

问题描述

我收到以下错误:“不能使用方法组作为动态调度操作的参数”:

public static void Convert(dynamic o)
{
clsQRcode.ConvertToQRs(o, SendSignalR); // error is here
}

public static void SendSignalR(dynamic o)
{
.... do stuff ....
}

在 clsQRcode.ConvertToQRs 中:

public static void ConvertToQRs(dynamic o, Action<dynamic> SSR)
{
... do stuff to o
SSR(o);
}

那么,我没有错吗?

更改代码:

我删除了对动态的所有引用,现在有以下代码,但出现类似错误:

public static void ConvertToQRs(string jsonString)
{
clsQRcode.ConvertToQRs(jsonString, SendSignalR); // error still here
}

public static string SendSignalR(string org_int, string person_int, string code, string message, string sCode = "")
{
... do stuff ...
}

将 clsQRcode 更改为:

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string> SSR)
{
... do the work ...
SSR(org_int, person_int, function, message);
}

但现在错误消息是:“无法从'方法组'转换为'Func

标签: c#parameter-passing

解决方案


查看最终代码中的这一行:

public static string SendSignalR(string org_int, string person_int, string code, string message, string sCode = "")

该方法接受 5 个string参数并返回string,所以它是Func<string, string, string, string, string, string>(前 5 个string- 输入参数类型,最后一个 - 返回值类型),而在这里

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string> SSR)

SSRFunc<string, string, string, string, string>(注意,只有 5 string,不是 6)。将此行替换为

public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string, string> SSR)

(6 string) 并且您的代码将起作用。


推荐阅读