要从集线器外部获取IHubContext,我使用:
public class EventSender
{
private readonly IHubContext context;
public EventSender(ApiServices services)
{
context = services.GetRealtime<MyHub>();
}
public void Send(string message)
{
context.Clients.All.Send(message);
}
}
其中services
是注入调用类的ApiServices
实例。
如果我想注入IHubContext
本身怎么办?我怎么做?
我试图在IHubContext
中注册WebApiConfig.cs
实例,如下所示:
var configBuilder = new ConfigBuilder(options, (httpConfig, autofac) =>
{
autofac.RegisterType<Logger>().As<ILogger>().SingleInstance();
autofac.RegisterInstance(??).As<IHubContext>(); <-- ????
....
但这有两个问题:
ApiServices
个实例(WebApiConfig
类是静态的,所以我无法将其注入其中。)IHubContext
似乎过于笼统。答案 0 :(得分:1)
如果您可以注入ApiServices,则可以在尝试注册依赖项时拥有访问权限。
你能尝试这样的事吗?
autofac.Register(c =>
{
var services = c.Resolve<ApiServices>();
return services.GetRealtime<MyHub>();
}.As<IHubContext>();
在你的构造函数中:
public EventSender(IHubContext context)
{
this.context = context;
}