我正在构建一个windows服务,它将作为一个现有站点的客户端,该站点正在使用SignalR。
在传递具体类时,我可以使用IHubProxy.On<>和IHubProxy.Invoke方法。
例如,这是可行的:
hubProxy.On<MigrationRequest>("iSWindowsServiceRequest", request =>
MigrateData.Invoke(request));MigrationRequest看起来像这样:
public class MigrationRequest : IISWindowsServiceRequest
{
public MigrateWhat What { get; set; }
public MigrationFor For { get; set; }
public Guid EntityFor_Id { get; set; }
}现在,如果我尝试这样做:
hubProxy.On<IISWindowsServiceRequest>("iSWindowsServiceRequest", request =>
Handshake.HandleRequest(request));我的请求从来没有被接受过。
我希望实现的是创建单个的pub-sub方法,而不是为该服务可以接受的每个具体类创建一个方法。
是否可以将接口传入On<>()方法?
对于Invoke<>()也是如此-如果我传递的对象包含接口的任何属性,则调用永远不会成功。
所以这是行不通的:
public class ISWindowsServiceResponse
{
public IISWindowsServiceRequest OriginalRequest { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
}但这将会
public class ISWindowsServiceResponse
{
public MigrationRequest OriginalRequest { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
}发布于 2016-06-08 04:30:24
在我工作的地方,我们花了很多时间试图找出一种让SignalR集线器序列化接口的方法。最后,我们不得不提取真实的对象(真实的类和结构,而不是在接口后面)来通过网络发送。没有办法告诉SignalR如何序列化接口。
https://stackoverflow.com/questions/31299853
复制相似问题