SignalR客户端多参数

本文关键字:参数 客户端 SignalR | 更新日期: 2023-09-27 18:14:41

我是stackoverflow的新手,多年来一直是一个潜伏者,对我作为一名开发人员有很大的帮助。多谢。

以第一个帖子和问题结束我的介绍:

的场景:

我正在使用SignalR。

我有一个SignalR服务器,它通过6个参数向所有客户端广播消息。

当我在一个Web客户端(MVC)实现它的工作很好,我可以得到所有这6个参数。

我尝试在Xamarin中实现它。

下面是示例代理代码片段:
proxy.On<string, string, string , string, string, string>("test", (test1, test2, test3, test4, test5, test6) =>
            {
                MyActivity.RunOnUiThread(() =>
                {
                    //my method here
                });
            });

当我有6个参数时,我会得到这个错误:

'IHubProxy'不包含'On'的定义,并且没有扩展方法'On'接受类型'IHubProxy'的第一个参数可以找到(您是否缺少using指令或程序集引用?)

但是当我把参数改为4

proxy.On<string, string, string , string>("test", (test1, test2, test3, test4) =>
        {
            MyActivity.RunOnUiThread(() =>
            {
                //my method here
            });
        });

我不会得到一个错误,我将能够得到那4个参数。但是在我的应用程序中,我需要得到所有这6个参数。

为什么每当我有超过4个参数我得到这个错误?

我错过了什么吗?

谢谢!

SignalR客户端多参数

这只是SignalR . net客户端代理的一个限制。似乎开发人员对重写On方法来支持更多的类型参数有点懒惰,或者他们只是认为如果你有更多的参数,你应该把它们分组在一个类中。

解决方案真的很简单。创建一个包含尽可能多属性的类,而不是使用参数。比如:

public class AllParams
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public string Prop3 { get; set; }
    public string Prop4 { get; set; }
    public string Prop5 { get; set; }
    public string PropN { get; set; }
}
proxy.On<AllParams>("test", all =>
{
    MyActivity.RunOnUiThread(() =>
    {
        // all.Prop1, all.Prop2, etc...
    });
});