2014-02-13 104 views
4

我爲我的SignalR服務器創建一個Hub類,並希望使用一種通用的方法,它可以讓我從大量的代碼行中解救出來。但是,當我嘗試從C#中的Xamarin.iOS客戶端調用下面的服務器代碼時,SignalR給了我錯誤。在SignalR Hub上使用通用方法

var list = await hubProxy.Invoke<List<Article>>("SendDataToClient"); 

上午我在這裏做得不對,或只是不可能SignalR集線器使用泛型方法服務器代碼

public List<T> SendDataToClient<T>() where T : BusinessEntityBase 
{ 
    return SomeDBManager.GetItems<T>(); 
} 

客戶端代碼?

回答

3

您不能從SignalR客戶端調用泛型方法。你會發現,如果你運行signalr ghp /path:myassembly.dll對含樞紐與通用SendDataToClient方法的dll,你會得到以下錯誤:

System.ArgumentException: Method System.Collections.Generic.List`1[T] SendDataToClient[T]() is a generic method definition 

很容易看到這樣的錯誤使用signalr ghp命令時產生JavaScript集線器代理文件,但這與您嘗試調用SendDataToClient時發生在服務器上的錯誤相同。

+0

謝謝您的解答。所以現在我不得不問,你會推薦什麼,而不是這個?爲每個不同類型的數據寫一個函數到集線器? – timu

+1

這是最直接的方法。 – halter73