5

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

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

还是必须通过代码完成?

4

4 回答 4

10

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

不过,您可以在代码中进行更强大的绑定。

于 2010-01-27T16:42:44.320 回答
5

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

从 XML 中解脱出来

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

于 2010-01-27T14:59:42.357 回答
4

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

如果我们有 xml 配置,我根本不需要参考,也不需要重新编译。现在我有使用 DI 将存储库传递给控制器​​的 MVC 应用程序。没有别的,然后用于添加绑定的 Ninject 代码使用存储库的具体实现。我仍然需要添加对包含实现的 dll 的引用。只需一行代码!

或者也许有可能使用 Ninject 来实现这一点?

于 2011-03-27T21:07:41.073 回答
3

你想要达到什么目标?您要配置什么样的东西?动态选择策略 ? 传递端口号?您可以提供更多关于您的想法的信息,以便获得更好的答案[您可以接受:P]。

您需要拆分以下问题:

  1. 已知对象接线 (DI)
  2. 配置 - 通常你会希望将它们分成小的集中子集,例如强类型配置元素与在一大堆中混杂在一起的全局设置池appSettings
  3. 插件/未知对象接线(MEF?)

在第一个池中,在代码中执行它是正确的方法,我想不出 XML 会带来什么优势,尤其是。在强名称等的上下文中。

于 2010-01-27T16:41:22.730 回答