Asp.net mvc 3 ASP.NET MVC 3中的Ninject注入问题
我有三个项目将使用DI。我的项目是一个ASP.NETMVC3网站。我从nuget安装了ninject MVC包,它添加了我的引导程序。我登记了我的装订 NinjectMVC3.csAsp.net mvc 3 ASP.NET MVC 3中的Ninject注入问题,asp.net-mvc-3,dependency-injection,singleton,ninject,ninject-2,Asp.net Mvc 3,Dependency Injection,Singleton,Ninject,Ninject 2,我有三个项目将使用DI。我的项目是一个ASP.NETMVC3网站。我从nuget安装了ninject MVC包,它添加了我的引导程序。我登记了我的装订 NinjectMVC3.cs private static void RegisterServices(IKernel kernel) { kernel.Bind<IUserService>().To<UserService>(); } 私有静
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IUserService>().To<UserService>();
}
私有静态无效注册服务(IKernel内核)
{
kernel.Bind().To();
}
我有一个单独的项目,其中包含UserService和IUserService。在那个项目中,我还有一个单例工厂类来创建我的服务
public class ServiceFactory : BaseFactory<ServiceFactory>
{
[Inject]
public IUserService UserService { get; set; }
}
公共类服务工厂:BaseFactory
{
[注入]
公共IUserService用户服务{get;set;}
}
当我调用ServiceFactory.Instance.UserService时,上面的值总是空的原因是什么?猜测:工厂很可能不是由Ninject创建的 但由于在执行依赖项注入时无论如何都不应该使用单例模式,所以这应该很容易解决
IUserService
传递给需要知道它的任何对象的构造函数kernel.Bind().To().InSingletonScope()代码>
好吧,我切换到做这个链接,但我仍然得到一个空值。内核设置被命中。此外,我可能在一个控制器上有多个服务,并且不希望在其中包含5或6个参数。我宁愿做财产注入。我有点困惑。该链接不建议使用单例模式。此外,如果您对构造函数有很多依赖关系,那么这很可能不是构造函数的问题,而是您没有正确地遵循单一责任原则。此外,我成功地将其用作Ninjection的MVC引导程序。我通过添加一个以IUserService为参数的构造函数解决了这一问题,并且成功地实现了。我将遵循单一责任原则的方向。