gpt4 book ai didi

c# - Microsoft.AspNetCore.SignalR SendAsync 参数

转载 作者:行者123 更新时间:2023-11-30 14:44:43 25 4
gpt4 key购买 nike

有人可以向我解释为什么他们在 AspNetCore.SignalR.SendAsync 方法中使用 arg1, arg2 .... 而不是 params object[] args ?

有更好的方法吗?

Screenshot

最佳答案

CancellationToken是可选的。您会在 documentation 中注意到它被定义为:

System.Threading.CancellationToken cancellationToken = null

(虽然在 actual code 中是 = default ,所以我认为文档是错误的)

Optional arguments必须排在最后。

而且,在 params 中使用无限参数关键字也必须排在最后。所以你不能在同一个方法定义中同时使用两者。

另一种方法是使用 CancellationToken 创建方法作为倒数第二个参数,没有它的重载:

public static Task SendAsync (this HubConnection hubConnection, string methodName, params object[] args) {
return SendAsync(hubConnection, methodName, default, args);
}

public static Task SendAsync (this HubConnection hubConnection, string methodName, CancellationToken cancellationToken, params object[] args) {
...
}

这有效地使 CancellationToken选修的。但是,在这种特定情况下,它还会阻止您发送 CancellationToken。作为第一个参数(在 args 数组中)而不是在 cancellationToken 中参数,如果您出于任何原因需要这样做。

但是微软也有把CancellationToken作为他们编写的每个异步方法的最后一个参数。因此,如果他们这样做,他们就会打破这种模式。所以他们决定只允许 10 arguments .

关于c# - Microsoft.AspNetCore.SignalR SendAsync 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com