尽管方法签名与委托完全匹配,但将函数分配给事件时出现错误 '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;
}