C# 试图让ninject和Signal正常工作

C# 试图让ninject和Signal正常工作,c#,asp.net,ninject,signalr,C#,Asp.net,Ninject,Signalr,在我的NinjectWebCommon.cs文件中,在RegisterServices方法下,我有以下内容: private static void RegisterServices(IKernel kernel) { kernel.Bind<IProfileRepository>().To<ProfileRepository>(); kernel.Bind<IMatchUpService>().

在我的NinjectWebCommon.cs文件中,在
RegisterServices
方法下,我有以下内容:

private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IProfileRepository>().To<ProfileRepository>();
            kernel.Bind<IMatchUpService>().To<MatchUpService>();
            kernel.Bind<ISoloUserRepository>().To<SoloUserRepository>();
           SignalR.GlobalHost.DependencyResolver =  new SignalR.Ninject.NinjectDependencyResolver(kernel);

        }  

由于某种原因,当我尝试在我的Hub类中使用
soloUsers
对象时,我得到的
对象引用没有设置为对象的实例
,因为
soloUsers
对象从未被实例化,或者换句话说,没有被注入。我做错什么了吗?

您的问题是您有一个
私有属性,而Ninject默认情况下不注入私有属性

因此,您可以使您的属性
公开
,也可以通过以下方式启用非公开属性注入:

kernel.Settings.InjectNonPublic = true;
我不熟悉signar中的依赖项注入(因此可能不受支持),但您应该始终更喜欢构造函数注入,因此您的
Hub
应该如下所示:

public class MatchMaker : Hub
{    
    private readonly ISoloUserRepository soloUsers;

    public MatchMaker(ISoloUserRepository soloUsers) 
    {
        this.soloUsers = soloUsers;
    }
}

由于此答案标记为已接受,我认为它解决了@anthonypliu的问题,这意味着ninject可用于信号机及其集线器。我现在就去试试
public class MatchMaker : Hub
{    
    private readonly ISoloUserRepository soloUsers;

    public MatchMaker(ISoloUserRepository soloUsers) 
    {
        this.soloUsers = soloUsers;
    }
}