在SignalR Hub上使用通用方法

4
我正在为我的SignalR服务器创建一个Hub类,并希望使用一个通用方法,这将使我节省大量的代码行。但是当我尝试从Xamarin.iOS客户端调用下面的服务器代码时,SignalR会给出错误提示,因为两者都是用C#编写的。

服务器代码

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

客户端代码

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

我在这里做错了什么,还是在SignalR Hub中使用通用方法不可能?

1个回答

6

SignalR客户端无法调用泛型方法。如果您对包含具有泛型SendDataToClient方法的Hub的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 hub代理文件时,更容易看到此错误,但在尝试调用SendDataToClient时,服务器上发生的错误也是相同的。

谢谢您的许可。那么现在我必须问一下,您建议用什么代替呢?为每种不同类型的数据编写一个函数到中心枢纽? - timu
1
这是最直接的方法。 - halter73

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接