使用NInject连接依赖项的选项

Bla*_*man 5 asp.net asp.net-mvc dependency-injection ninject configuration-files

使用NInject(最好是2.0),我们在Web应用程序中连接对象依赖项时有哪些选项?

它们可以在XML配置文件中定义吗?

还是必须通过代码完成?

Ian*_*vis 10

基于xml的配置有一个扩展:https://github.com/ninject/ninject.extensions.xml

您可以在代码中执行更强大的绑定.


Res*_*uta 5

Ninject没有XML配置,对不起但是我无法提供直接链接(因为他们的网站有flash元素),但这里有来自ninject.org的引文:

从XML中解脱出来

大多数其他.NET依赖注入框架是围绕使用XML来声明类型绑定而设计的.Ninject不是强迫您编写繁琐且容易出错的文本,而是通过流畅的界面为您提供支持,使您可以使用完整的代码连接应用程序的各个部分.这意味着您可以利用IDE和编译器的功能,例如代码完成和类型安全.

  • 令人惊讶的是他们如何能够产生负面的声音.大多数其他DI\Ioc允许您使用Xml或代码. (9认同)
  • 我主要使用代码来映射我的绑定,但有些情况下配置有效.对于调试,我可能希望将IMailService绑定到VirtualMailService,但在发行版中使用SmtpMailService.配置文件根据发布环境进行转换. (7认同)
  • 如果您需要重命名任何这些服务实现,那么反例会是什么?您应该牢记这一点以及所有团队成员.对于你的情况,我会为"发布"和"调试"模式创建一个代码内配置,在配置文件中我会有一个设置,如`"<add key ="configuration-mode"value ="release"/ >`.这更好. (4认同)
  • 这是非负面的.明智地削减XML支持,因为它是一种可维护性的痛苦. (2认同)