IHubClients 和 IHubCallerClients 隐藏成员

添加对客户端结果的支持,IHubClientsIHubCallerClients 现在使用 ISingleClientProxy Client(string connectionId);ISingleClientProxy Caller { get; } 隐藏接口成员 IClientProxy Client(string connectionId);IClientProxy Caller { get; }

除非使用反射调用受影响的 ClientCaller 方法,否则这不是生产代码的中断性变更。 可能需要更新单元测试 SignalR 中心。

引入的版本

ASP.NET Core 7.0

旧行为

使用 Moq 等测试库对 SignalR 中心进行单元测试时,可以编写如下代码:

var hub = new MyHub();
var mockCaller = new Mock<IHubCallerClients>();
var mockClientProxy = new Mock<IClientProxy>();
mockCaller.Setup(x => x.Caller).Returns(mockClientProxy.Object);
hub.Clients = mockCaller.Object;

class MyHub : Hub { }

新行为

var hub = new MyHub();
var mockCaller = new Mock<IHubCallerClients>();
var mockClientProxy = new Mock<ISingleClientProxy>(); // <-- updated code
mockCaller.Setup(x => x.Caller).Returns(mockClientProxy.Object);
hub.Clients = mockCaller.Object;

class MyHub : Hub { }

中断性变更的类型

此更改会影响源兼容性。

更改原因

所做的更改是向 SignalR 添加新功能。 但在正常用例中,它不会中断,但可能会中断测试代码,而测试代码很容易更新。

使用反射或基于反射的代码更新测试代码以使用 ISingleClientProxy 接口。

受影响的 API