为什么不初始化集线器方法,但是相关的依赖项却被初始化?

问题描述 投票:0回答:1

我正在使用SimpleInjectorHubActivator<T>初始化我的SignalR(AspNetCore.SignalR)集线器并将其注册在Simple Injector中(如the documentation中所述。这是我编写的代码:

public class SimpleInjectorHubActivator<T> : IHubActivator<T> where T : Hub
{
    private readonly Container container;
    private Scope scope;

    public SimpleInjectorHubActivator(Container container) => this.container = container;

    public T Create()
    {
        scope = AsyncScopedLifestyle.BeginScope(this.container);
        return this.container.GetInstance<T>();
    }

    public void Release(T hub) =>scope.Dispose();
}

我要初始化的Hub具有其他三个相关的依赖关系,这些依赖关系正在初始化,但HubClientContext之类的Group方法不是:

img

这是我创建中心实例的方式:

using (AsyncScopedLifestyle.BeginScope(container1))
{
    _hub = container1.GetInstance<Hub>();
    await _hub.Clients.Group("test").SendAsync("ReceiveMessage", "test");
}

有人可以告诉我这个问题吗?

asp.net-core dependency-injection signalr simple-injector asp.net-core-signalr
1个回答
0
投票

集线器的ClientsContextGroup属性由SignalR的内部DefaultHubDispatcher初始化,它是SignalR的IHubActivator<T>的主要使用者。初始化这些属性既不是IHubActivator<T>的任务,也不是DI容器的任务。他们只是没有足够的信息。

© www.soinside.com 2019 - 2024. All rights reserved.