我正在为我的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中使用通用方法是不可能的?
答案 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时服务器上发生的错误相同。