gpt4 book ai didi

c# - 试图让 ninject 和 signalR 正常工作

转载 作者:行者123 更新时间:2023-11-30 14:00:14 25 4
gpt4 key购买 nike

在我的 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);

}

我正在尝试将 SoloUserRepository 注入(inject)到我的中心类中,这是我的中心类:

public class MatchMaker : Hub
{
[Inject]
private ISoloUserRepository soloUsers { get; set; }
}

出于某种原因,当我尝试在我的 Hub 类中使用 soloUsers 对象时,我得到 object reference not set to instance of an object 因为 soloUsers 对象永远不会被实例化,换句话说,不会被注入(inject)。我做错了什么吗?

最佳答案

你的问题是你有一个 private 属性,默认情况下 Ninject 不会注入(inject)私有(private)属性。

因此,要么将您的属性设为公共(public),要么您可以通过以下方式启用非公共(public)属性注入(inject):

kernel.Settings.InjectNonPublic = true;

我不熟悉 SignalR 中的依赖项注入(inject)(因此可能不受支持),但您应该始终更喜欢构造函数注入(inject),因此您的 Hub 应该是这样的:

public class MatchMaker : Hub
{
private readonly ISoloUserRepository soloUsers;

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

关于c# - 试图让 ninject 和 signalR 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com