在SignalR Hub上使用通用方法

时间:2014-02-13 16:14:47

标签: c# generics signalr signalr-hub signalr.client

我正在为我的SignalR服务器创建一个Hub类,并希望使用一种通用方法,这将节省我的大量代码行。但是当我尝试从也在C#中的Xamarin.iOS客户端调用下面的服务器代码时,SignalR给了我错误。

服务器代码

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

客户代码

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

我在这里做错了什么,或者在SignalR Hubs中使用通用方法是不可能的?

1 个答案:

答案 0 :(得分:4)

您无法从SignalR客户端调用通用方法。您会注意到,如果您使用通用SendDataToClient方法对包含集线器的DLL运行signalr ghp /path:myassembly.dll,您将收到以下错误:

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

使用signalr ghp命令生成JavaScript集线器代理文件时,更容易看到此错误,但这与尝试调用SendDataToClient时服务器上发生的错误相同。