MVC依赖注入

我开始使用MVC4的新项目,并希望使用依赖注入。我过去没有使用它,但现在看来是使用它的好时机。MVC依赖注入

有谁能告诉我哪些DI工具现在支持MVC4,哪些现在提供最简单的设置。由于项目很小,我的需求相当简单。对我来说最重要的是一个易于学习和配置的系统。

回答:

我不知道MVC 4(我还没有机会玩它),但我会推荐Ninject作为DI容器。你可能只在您的解决方案安装Ninject MVC3项目(从的NuGet),它可能只是MVC4 工作,如果不使用:

DependencyResolver.SetResolver(new NinjectDependencyResolver(myKernal));  

其博客上讲述这里http://blogs.microsoft.co.il/blogs/gilf/archive/2010/10/17/dependency-injection-in-mvc-3-was-made-easier.aspx

博客文章适用为了统一,但它与Ninject几乎相同,实现了一个Dependancy Resolver来包装ninject并将其放入global.ascx文件。

回答:

由于某些原因,使用NinjectDependencyResolver的Ninject对MVC4(Developer预览版)无效。

我解决了它使用SetResolver的另一个重载取两个匿名函数来解决依赖关系

IKernel kernel = new StandardKernel();  

kernel.Bind<...>().To(...);

DependencyResolver.SetResolver(t => kernel.Get(t), t => kernel.GetAll(t));

回答:

我在MVC 4 Beta项目中成功使用了Ninject.MVC3 NuGet包。

// Global.asax.cs 

public static void Configure(HttpConfiguration config)

{

var kernel = new StandardKernel();

RegisterServices(kernel);

// For ApiControllers

config.ServiceResolver.SetResolver(

t => kernel.TryGet(t),

t => kernel.GetAll(t));

// For Controllers

DependencyResolver.SetResolver(

t => kernel.TryGet(t),

t => kernel.GetAll(t));

}

public static void RegisterServices(IKernel kernel)

{

kernel.Bind<IRepository>().To<Repository>();

}

protected void Application_Start()

{

...

Configure(GlobalConfiguration.Configuration);

}

以上是 MVC依赖注入 的全部内容, 来源链接: utcz.com/qa/258691.html

回到顶部