将 void 函数分配给 Auth 事件时编译错误

Posted

技术标签:

【中文标题】将 void 函数分配给 Auth 事件时编译错误【英文标题】:Compile Error While Assigning Void Function to Auth Event 【发布时间】:2015-12-31 18:07:28 【问题描述】:

我正在构建一个需要 Spotify 使用 ImplicitGrantAuth 对用户进行身份验证的应用程序。我已经在 Spotify 的开发人员上设置了我的应用程序,并且有一个 ClientID。我正在为这个应用程序使用JohnnyCrazy/SpotifyAPI-NET

可以找到隐式授权认证的 API 文档 here.

可以找到 Spotify 的 Implicit Grant Flow 文档 here.

可以找到ImplicitGrantAuth的原始类 here。

代码 sn-p:

static ImplicitGrantAuth auth;
static void Main(string[] args)

    //Create the auth object
    auth = new ImplicitGrantAuth()
    
        //Your client Id
        ClientId = "XXXXXXXXXXXXXXXXXX", // example only
        //Set this to localhost if you want to use the built-in HTTP Server
        RedirectUri = "http://localhost",
        //How many permissions we need?
        Scope = Scope.UserReadPrivate,
    ;
    //Start the internal http server
    auth.StartHttpServer();
    //When we got our response
    auth.OnResponseReceivedEvent += auth_OnResponseReceivedEvent; // <-- Error here!
    //Start
    auth.DoAuth();


static void auth_OnResponseReceivedEvent(Token token, string state, string error)

    //stop the http server
    auth.StopHttpServer();

    var spotify = new SpotifyWebAPI()
    
        TokenType = token.TokenType,
        AccessToken = token.AccessToken
    ;
    //We can now make calls with the token object

编译错误:

“auth_OnResponseReceivedEvent”没有过载匹配委托“SpotifyAPI.Web.Auth.ImplicitGrantAuth.OnResponseReceived”

我不确定我是否忽略了一些非常简单的东西,或者我是否需要特别添加一些东西。我对使用事件处理程序也很陌生。

【问题讨论】:

【参考方案1】:

auth_OnResponseReceivedEvent 方法中的参数过多。 OnResponseReceived委托中没有string state参数:

public delegate void OnResponseReceived(Token token, String error);

public event OnResponseReceived OnResponseReceivedEvent;

【讨论】:

以上是关于将 void 函数分配给 Auth 事件时编译错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将“Function”类型的参数分配给“void Function()”类型的参数?

React Error - 在导出为模块之前将箭头函数分配给变量和

Python - GUI复选框无法将带有参数的函数分配给变量

谷歌编译器没有将空数组分配给变量?

如果我无法将 Future 函数分配给 onPressed 怎么办?

使用 Web Audio API 将两个声音分配给两个 Div,并通过带有 javascript 的 click 事件独立播放