簡體   English   中英

具有多個參數的 SignalR 客戶端

[英]SignalR Client with Multiple Parameters

我是 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”的定義,並且找不到接受“IHubProxy”類型的第一個參數的擴展方法“On”(您是否缺少 using 指令或程序集引用?)

但是當我將參數更改為 4 時

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

我不會出錯,我將能夠獲得這 4 個參數。 但是在我的應用程序中,我需要獲得所有這 6 個參數。

為什么每當我有超過 4 個參數時都會出現此錯誤?

我錯過了什么嗎?

謝謝!

這只是 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...
    });
});

這甚至可以提高您的代碼可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM