首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ninject如何在ASP.NET MVC中创建控制器?

Ninject如何在ASP.NET MVC中创建控制器?
EN

Stack Overflow用户
提问于 2011-02-17 00:06:35
回答 3查看 2.1K关注 0票数 11

这可能是一个愚蠢的问题,但我正在查看Ninject的源代码,并没有看到它注册自己的控制器工厂。我在Ninject.Web.Mvc程序集中也看不到任何IControllerFactory类。我是不是遗漏了什么?如何在构造函数中创建控制器和注入参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-19 13:40:04

假设我们正在寻找“//

  1. ”。
  2. Ninject MVC应用程序现在使用DefaultControllerFactory,和非Ninject应用程序一样。
  3. DefaultControllerFactory查找控制器的类型(TaskController).
  4. DefaultControllerFactory具有名为DefaultControllerActivator的内部类。DefaultControllerActivator有一个名为Create的方法,它返回控制器实例。DefaultControllerFactoryDefaultControllerActivator请求instance.
  5. DefaultControllerActivator.Create使用IDependencyResolverIDependencyResolver类型。这就是Ninject的用武之地。由于Ninject实现了自己的解析器并在应用程序开始时设置解析器,因此他可以很容易地获得instance.
  6. The rest的TaskController请求。Ninject找到此类型的构造函数,注入参数,返回控制器实例。
票数 13
EN

Stack Overflow用户

发布于 2011-02-17 00:18:58

MVC3现在建议在处理DI时使用IDependencyResolver接口,而不是很好的旧IControllerFactory。您可以查看此接口here的更多详细信息。

This is the new Ninject class负责注入依赖项。

票数 4
EN

Stack Overflow用户

发布于 2011-10-20 03:26:28

因为控制器是具体的类型,所以Ninject将进行自我绑定。以下是来自ninject.complex.com的代码片段

请记住,只有具体的类型才能自我绑定;抽象类型和接口将不起作用。此外,如果您请求一个可以自绑定的类型的实例,并且没有为该类型定义绑定,则Ninject将自动创建一个隐式的自绑定。你是想显式地定义你的绑定,还是让Ninject去解决它,这取决于你。

如果您确实需要将参数注入到构造函数中。您可以创建一个从INinjectModule继承的类,并在那里进行绑定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5018810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档