c# - 传递动态方法时出错:不能使用方法组作为参数
问题描述
我收到以下错误:“不能使用方法组作为动态调度操作的参数”:
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
解决方案
查看最终代码中的这一行:
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)
SSR
是Func<string, string, string, string, string>
(注意,只有 5 string
,不是 6)。将此行替换为
public static void ConvertToQRs(string jsonString, Func<string, string, string, string, string, string> SSR)
(6 string
) 并且您的代码将起作用。
推荐阅读
- asp.net-core - Azure Devops Oauth 身份验证:无法获取访问令牌(BadRequest 无法反序列化 JsonWebToken 对象)
- php - 如何在不使用任何扩展的情况下在 php 中并行运行方法?
- c# - 我如何理解 c# 项目基于什么模板
- javascript - 从一系列 ArrayBuffer 创建 webm 视频 blob
- r - 识别异常值并仅在 R 中使用 groupby 多列处理异常值?
- reactjs - 在 redux 中处理获取状态的最佳方法
- c - 如何使用滚动条在 GTK3 区域中绘制
- c - 您可以在 Arduino IDE 中打开和编辑 .c 文件吗?然后将它们加载到 Arduino 板上
- javascript - 如何使用 getJSON 填充下拉选择元素
- amazon-web-services - Do I have to use AppSync for apollo graphql in lambda?