【问题标题】:Using generic methods on SignalR Hub在 SignalR Hub 上使用通用方法
【发布时间】:2014-02-13 16:14:47
【问题描述】:

我正在为我的 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 中使用泛型方法?

【问题讨论】:

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


    【解决方案1】:

    您不能从 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 时服务器上发生的错误相同。

    【讨论】:

    • 感谢您的许可。所以现在我不得不问你会推荐什么来代替这个?为每种不同类型的数据编写一个函数到集线器?
    • 这是最直接的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2018-04-30
    • 2018-03-27
    • 2013-11-10
    • 2014-06-21
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多