ASP.NET MVC 3中的Ninject注入问题

时间:2011-06-21 17:10:04

标签: asp.net-mvc-3 dependency-injection singleton ninject ninject-2

我有三个将使用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?

1 个答案:

答案 0 :(得分:2)

猜测:很可能工厂不是由Ninject创建的。

但是,在执行依赖注入时,不应该使用Singleton模式,这应该很容易解决。

  1. IUserService传递给任何需要知道它的对象的构造函数。
  2. 将其绑定为单身kernel.Bind<IUserService>().To<UserService>().InSingletonScope();