IHubClients et IHubCallerClients masquent les membres

Pour ajouter la prise en charge des résultats du client, IHubClients et IHubCallerClients masquent dorénavant les membres de l’interface IClientProxy Client(string connectionId); et IClientProxy Caller { get; } avec ISingleClientProxy Client(string connectionId); et ISingleClientProxy Caller { get; }.

Il ne s’agit pas d’un changement cassant apporté au code de production, sauf si vous utilisez la réflexion pour appeler les méthodes Client ou Caller affectées. Vous devrez peut-être mettre à jour les hubs SignalR de test unitaire.

Version introduite

ASP.NET Core 7.0

Comportement précédent

Lorsque vous utilisez une bibliothèque de test comme Moq pour tester un SignalR Hub, vous pouvez écrire du code semblable à ce qui suit :

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 { }

Nouveau comportement

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 { }

Type de changement cassant

Ce changement affecte la compatibilité de la source.

Raison du changement

La modification a été apportée pour ajouter de nouvelles fonctionnalités à SignalR. Il n’est pas cassant dans les cas d’usage normaux, mais il peut casser le code de test, qui est facilement mis à jour.

Mettez à jour le code de test pour utiliser l’interface ISingleClientProxy lors de l’utilisation la réflexion ou du code basé sur la réflexion.

API affectées