传递动态方法时出错:无法将方法组用作参数

时间:2019-03-29 17:25:27

标签: c# parameter-passing

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

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);
}

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

1 个答案:

答案 0 :(得分:1)

在您的最终代码中查看以下行:

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),您的代码将可用。