7

关于将 Ninject 与 asp.net mvc 4 一起使用,我不知道如何处理 .net 中通过 google 获得的大量文档

首先,我想知道asp.net中是否需要控制器工厂。

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

4

2 回答 2

9

我不是这方面的专家,Ninject但据我所知,我只是用它来将我的DataSource Interface和我EfDb Class的与我的应用程序的其余部分联系起来。

如果您需要一本包含真实应用程序的好书,请Ninject尝试: Pro ASP.NET MVC 3 Framework,第三版

或者

临 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>();
    }
}

然后注册您NinjectControllerFactoryGlobal.asax.cs

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

如您所见,此类使用Method Injectionusing private void AddBindings()。如果您正在关注,这将非常容易Test Driven Development (TDD)

于 2013-03-11T09:51:08.173 回答
2

请参阅此处的文档: https ://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-controllers ,“唯一要做的就是为其依赖项配置 Ninject 绑定。即使不添加绑定,Ninject 也会找到控制器本身。”

NInject 将自动设置您的控制器依赖项(前提是它具有这些类型的绑定)。

于 2013-05-07T08:52:31.147 回答