使用NInject连接依赖项的选项

时间:2010-01-27 14:54:10

标签: asp.net asp.net-mvc dependency-injection configuration-files ninject

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

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

还是必须通过代码完成?

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:5)

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

  

从XML中解放自己

     

大多数其他.NET依赖注入   框架是围绕使用而设计的   XML来声明类型绑定。   而不是强迫你写   繁琐且容易出错的文字,   Ninject能说一口流利   界面,让你连接   您的应用程序使用的部分   完整的代码。这意味着你可以   利用的特点   IDE和编译器,就像代码完成一样   和类型安全。

答案 2 :(得分:4)

我在代码中定义绑定时遇到的问题是你必须添加对dll的引用。 如果不添加对新dll的引用(删除对旧的dll的引用),更改代码并重新编译,则无法更改绑定。

如果我们有xml配置,我根本不需要引用,也不必重新编译。 现在我有MVC应用程序使用DI将存储库传递给控制器​​。用于添加绑定的Ninject代码没有其他任何东西使用存储库的具体实现。而且我还需要添加对包含实现的dll的引用。只需一行代码!

或者也许有可能使用Ninject实现这一目标?

答案 3 :(得分:3)

你想要实现什么目标?你想配置什么样的东西?动态选择战略?传入端口号码?您可以提供更多关于您正在思考的信息,以便获得更好的答案[您可以接受:P]。

您需要分解以下问题:

  1. 已知对象布线(DI)
  2. 配置 - 通常你会想要将它们分成小的聚焦子集,例如强类型的配置元素与一大堆设置的全局设置混合在一起la appSettings
  3. 插件/ 未知对象布线(MEF?)
  4. 在第一个池中,在Code中执行它是正确的方法,我无法想到XML会给出的任何优势,尤其是。在强势名称的背景下等。