在SignalR Hub上使用通用方法

问题描述:

我为我的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>(); 
} 

客户端代码?

您不能从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