首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SignalR客户端-接受接口的IHubProxy.On<>和Invoke<>

SignalR客户端-接受接口的IHubProxy.On<>和Invoke<>
EN

Stack Overflow用户
提问于 2015-07-09 01:40:38
回答 1查看 1.7K关注 0票数 6

我正在构建一个windows服务,它将作为一个现有站点的客户端,该站点正在使用SignalR。

在传递具体类时,我可以使用IHubProxy.On<>IHubProxy.Invoke方法。

例如,这是可行的:

代码语言:javascript
运行
复制
 hubProxy.On<MigrationRequest>("iSWindowsServiceRequest", request =>
     MigrateData.Invoke(request));

MigrationRequest看起来像这样:

代码语言:javascript
运行
复制
public class MigrationRequest : IISWindowsServiceRequest
{
    public MigrateWhat What { get; set; }
    public MigrationFor For { get; set; }
    public Guid EntityFor_Id { get; set; }
}

现在,如果我尝试这样做:

代码语言:javascript
运行
复制
hubProxy.On<IISWindowsServiceRequest>("iSWindowsServiceRequest", request => 
Handshake.HandleRequest(request));

我的请求从来没有被接受过。

我希望实现的是创建单个的pub-sub方法,而不是为该服务可以接受的每个具体类创建一个方法。

是否可以将接口传入On<>()方法?

对于Invoke<>()也是如此-如果我传递的对象包含接口的任何属性,则调用永远不会成功。

所以这是行不通的:

代码语言:javascript
运行
复制
public class ISWindowsServiceResponse
{
    public IISWindowsServiceRequest OriginalRequest { get; set; }
    public bool Success { get; set; }
    public string Message { get; set; }
}

但这将会

代码语言:javascript
运行
复制
public class ISWindowsServiceResponse
{
    public MigrationRequest OriginalRequest { get; set; }
    public bool Success { get; set; }
    public string Message { get; set; }
}
EN

回答 1

Stack Overflow用户

发布于 2016-06-08 04:30:24

在我工作的地方,我们花了很多时间试图找出一种让SignalR集线器序列化接口的方法。最后,我们不得不提取真实的对象(真实的类和结构,而不是在接口后面)来通过网络发送。没有办法告诉SignalR如何序列化接口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31299853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档