在ASP.NET mvc 4中使用Ninject时是否需要控制器工厂

Set*_* IK 7 asp.net ninject

在使用Ninject和asp.net mvc 4时,我无法通过谷歌的.net提供大量文档.

首先,我想知道在asp.net中是否需要Controller工厂.

另外,构造函数注入真的是我们可以用MVC 4进行依赖注入的唯一方法,因为当我将它们与我的控制器一起使用时,属性注入和方法注入似乎不起作用

Kom*_*gem 9

我不是专家,Ninject但据我所知,我只是用它来链接我DataSource Interface和我EfDb Class的应用程序的其余部分.

如果你需要一本有真正的应用程序的好书,请Ninject试用:Pro: ASP.NET MVC 3 Framework,Third Edition

要么

Pro Asp.Net Mvc 4

我通常关注的代码行很少

public class NinjectControllerFactory : DefaultControllerFactory
{
    private IKernel ninjectKernel;

    public NinjectControllerFactory()
    {
        ninjectKernel = new StandardKernel();
        AddBindings();
    }

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        return controllerType == null
                   ? null
                   : (IController) ninjectKernel.Get(controllerType);
    }

    private void AddBindings()
    {
        ninjectKernel.Bind<IDataSource>().To<EfDb>();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后注册你NinjectControllerFactoryGlobal.asax.cs:

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

正如你所看到的,这个类应用Method Injection使用private void AddBindings().如果您关注,这将非常容易Test Driven Development (TDD)