尽管方法签名与委托完全匹配,但将函数分配给事件时出现错误 'CS0123'
Getting error 'CS0123' assigning a function to an event despite method signature matching exactly to the delegate
使用 discord.net,我编写了以下代码用于测试目的:
// Function I want to assign to the event
private static Task MessageRecieved(SocketMessage s, Task t)
{
Console.WriteLine(s.ToString());
return Task.CompletedTask;
}
static private DiscordSocketClient _client;
static async Task Main(string[] args)
{
// skip initialization stuff
_client.MessageReceived += MessageRecieved;
// main loop goes here
}
然而,_client.MessageReceived += MessageRecieved;
行给我这个错误:
CS0123 - No overload for 'MessageRecieved' matches delegate 'Func(SocketMessage, Task)'
(小括号是尖括号,只是Whosebug格式无法显示。)
尽管 MessageRecieved 的方法签名与这些类型完全匹配,并且具有 return 值。我还确保它没有引用其他功能。有谁知道是什么导致了这个错误?
documentation for this event handler 状态:
The event handler must return a Task and accept a SocketMessage as its parameter.
因此请尝试删除您当前拥有的 Task t
参数,它应该可以工作:
private static Task MessageRecieved(SocketMessage s)
{
Console.WriteLine(s.ToString());
return Task.CompletedTask;
}
使用 discord.net,我编写了以下代码用于测试目的:
// Function I want to assign to the event
private static Task MessageRecieved(SocketMessage s, Task t)
{
Console.WriteLine(s.ToString());
return Task.CompletedTask;
}
static private DiscordSocketClient _client;
static async Task Main(string[] args)
{
// skip initialization stuff
_client.MessageReceived += MessageRecieved;
// main loop goes here
}
然而,_client.MessageReceived += MessageRecieved;
行给我这个错误:
CS0123 - No overload for 'MessageRecieved' matches delegate 'Func(SocketMessage, Task)'
(小括号是尖括号,只是Whosebug格式无法显示。) 尽管 MessageRecieved 的方法签名与这些类型完全匹配,并且具有 return 值。我还确保它没有引用其他功能。有谁知道是什么导致了这个错误?
documentation for this event handler 状态:
The event handler must return a Task and accept a SocketMessage as its parameter.
因此请尝试删除您当前拥有的 Task t
参数,它应该可以工作:
private static Task MessageRecieved(SocketMessage s)
{
Console.WriteLine(s.ToString());
return Task.CompletedTask;
}