我有三个将使用DI的项目。我的项目是ASP.NET MVC 3站点。我从nuget安装了ninject MVC包,它添加了我的bootstrapper。我注册了我的装订。
NinjectMVC3.cs
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IUserService>().To<UserService>();
}
我有一个包含UserService和IUserService的单独项目。在那个项目中,我还有一个单件工厂类来创建我的服务。
public class ServiceFactory : BaseFactory<ServiceFactory>
{
[Inject]
public IUserService UserService { get; set; }
}
当我调用ServiceFactory.Instance.UserService时,是否有理由将上述内容始终为null?
答案 0 :(得分:2)
猜测:很可能工厂不是由Ninject创建的。
但是,在执行依赖注入时,不应该使用Singleton模式,这应该很容易解决。
IUserService
传递给任何需要知道它的对象的构造函数。kernel.Bind<IUserService>().To<UserService>().InSingletonScope();