在 SignalR Hub 上使用泛型方法

tim*_*imu 4 c# generics signalr signalr-hub signalr.client

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

服务器代码

public List<T> SendDataToClient<T>() where T : BusinessEntityBase
{
   return SomeDBManager.GetItems<T>();
}
Run Code Online (Sandbox Code Playgroud)

客户代码

var list = await hubProxy.Invoke<List<Article>>("SendDataToClient");
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么还是在 SignalR 集线器中使用泛型方法是不可能的?

hal*_*r73 5

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

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

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