19

在 MVC 中,我只是简单地创建NinjectControllerFactory实现DefaultControllerFactory接口的类,然后在其中进行一些绑定。最后在Global我运行它:

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

但是在 ASP.NET Web API 中使用 Ninject 怎么样?网上有一些信息,但已经过时并且是预发布版本。

有没有解决这个问题的直接方法?

4

4 回答 4

19

很多文章都是旧的原因是因为方法自 2012 年 6 月以来没有改变(RC 于 5 月 31 日发布)。您需要添加 Ninject MVC3 Nuget 包,然后实现“IDEpenencyResolver”,然后注册您的实现。

最好的两个步行方式是:

  1. http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/
  2. http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/
于 2012-12-24T08:18:46.487 回答
6

当前版本的 Ninject.Web.WebApi,至少从 3.2.1.0 开始,不再需要手动添加任何额外内容。像往常一样,只需添加包并在 NinjectWebCommon.cs 中注册所有内容。

于 2014-09-22T15:08:39.490 回答
5

对于 Web Api 2,您需要这些 nuget 包 -

Ninject
Ninject.Web.Common
Ninject.Web.WebApi 
Ninject.Web.Common.WebHost
WebActivatorEx 

您需要编辑NinjectWebCommon.CreateKernel(..)以包含

RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;

我在这里写了一篇详细的博客文章 - http://NoDogmaBlog.bryanhogan.net/2016/04/web-api-2-and-ninject-how-to-make-them-work-together/包括一个完整的解决方案去下载。

于 2016-04-22T06:32:25.343 回答
1

以下步骤可以让 Ninject 在 WebAPI 项目上工作:

  1. 安装 Ninject.Web.WebApi NuGet 包。
  2. 安装 Ninject.Web.WebApi.WebHost NuGet 包。
  3. 在添加到 App_Start 文件夹的文件 NinjectWebCommon 中的方法“RegisterServices”中注册您的依赖项。像这样:

Private static void RegisterServices(IKernel kernel)
{

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

} 
于 2016-07-09T05:16:24.053 回答