【发布时间】:2021-10-06 07:27:48
【问题描述】:
我正在编写一个 blazor 服务器 Web 应用程序。
我已经编写了这个非常基本的信号器集线器:
using Microsoft.AspNetCore.SignalR;
public class MyHub: Hub
{
public override Task OnConnectedAsync()
{
...
return base.OnConnectedAsync();
}
public Task my_function()
{
...
}
....
}
在这一步可以正常工作。
现在,我想从我的 blazor 应用程序的另一部分访问此中心:
public class AnotherClass
{
private readonly IHubContext<MyHub> _hub;
public AnotherClass(IHubContext<MyHub> hub)
{
_hub = hub;
}
...
public void another_function()
{
_hub.Clients.All.SendAsync(...); // <- This line works fine
(_hub as MyHub).my_function(); // <- Does not work
}
}
如您所见,我正在使用依赖注入来访问我的集线器对象。 我已经阅读了很多文档,包括微软的官方文档。 每个人都说我们必须在这种依赖注入中使用 IHubContext 类型。
所以 _hub 对象不知道 my_function 方法...
我尝试了很多东西:
- 将 _hub 投射到 MyHub
- 声明一个 IMyHub 接口并在依赖注入中使用 IMyHub
- 等
没有任何效果...
我的问题是:如何从 AnotherClass 对象调用 my_function ?
非常感谢
【问题讨论】:
标签: dependency-injection signalr blazor signalr-hub