繁体   English   中英

尽管方法签名与委托完全匹配,但仍将函数分配给事件时出现错误“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 - 'MessageRecieved' 没有重载匹配委托 'Func(SocketMessage, Task)'

(括号是尖括号,只是 StackOverflow 格式无法显示它。)尽管 MessageRecieved 的方法签名与这些类型完全匹配,并且具有返回值。 我还确保它不是指其他一些功能。 有谁知道是什么导致了这个错误?

此事件处理程序文档说明:

事件处理程序必须返回一个 Task 并接受一个 SocketMessage 作为其参数。

因此,尝试删除您当前拥有的Task t参数,它应该可以工作:

private static Task MessageRecieved(SocketMessage s)
{
    Console.WriteLine(s.ToString());
    return Task.CompletedTask;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM