[英]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.