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

问题描述 投票:0回答:1

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

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
1个回答
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)和你的代码将工作。

© www.soinside.com 2019 - 2024. All rights reserved.