Signalr集线器单例中的依赖项注入

本文关键字:注入 依赖 集线器 单例中 Signalr | 更新日期: 2023-09-27 18:19:56

我使用Ninject进行依赖项注入,我有这样的东西:

    private IUnitOfWork unitOfWork;
    public ChatHub(IUnitOfWork unitOfWork)
    {
        this.unitOfWork = unitOfWork;
    }

但问题是Hub是一个单例,UnitOfWork的创建只完成一次,这意味着我一直使用相同的UnitOfWork对象。这与每次请求时创建的控制器不同,因此UnitOfWork的范围也是每个请求。

我的问题是,尽管Hub是singleton,但我是否可以设置unitOfWork被实例化并为Hub的每个reqesut进行处理?

Signalr集线器单例中的依赖项注入

您可以尝试:

public interface IUnitOfWorkFactory
{
    IUnitOfWork Create();
}
public class UnitOfWorkFactory : IUnitOfWorkFactory
{
    public IUnitOfWork Create()
    {
        // creation of the unit of work
        return new UnitOfWork();
    }
}

在您的集线器中:

using (var unitOfWork = this.unitOfWorkFactory.Create())
{
    // use it here
    // i'm assuming that your unit of work implements IDisposable
}