【发布时间】:2023-03-03 22:45:02
【问题描述】:
使用 NInject(最好是 2.0),我们有哪些选项可以在 Web 应用程序中连接我们的对象依赖项?
可以在 XML 配置文件中定义它们吗?
还是必须通过代码来完成?
【问题讨论】:
标签: asp.net asp.net-mvc dependency-injection configuration-files ninject
使用 NInject(最好是 2.0),我们有哪些选项可以在 Web 应用程序中连接我们的对象依赖项?
可以在 XML 配置文件中定义它们吗?
还是必须通过代码来完成?
【问题讨论】:
标签: asp.net asp.net-mvc dependency-injection configuration-files ninject
基于 xml 的配置有一个扩展:https://github.com/ninject/ninject.extensions.xml
您可以在代码中进行更强大的绑定。
【讨论】:
Ninject 没有 XML 配置,抱歉,我无法提供直接链接(因为他们的网站有 flash 元素),但这里引用 ninject.org 的引文:
从 XML 中解脱出来
大多数其他 .NET 依赖注入 框架是围绕使用而设计的 XML 声明类型绑定。 而不是强迫你写 繁琐且容易出错的文本, Ninject 用流利的语言武装你 接口,它可以让您连接 您的应用程序使用 完整的代码。这意味着您可以 利用的特点 IDE 和编译器,例如代码完成 和类型安全。
【讨论】:
"<add key="configuration-mode" value="release"/> 的设置。这样更好。
我看到的仅在代码中定义绑定的问题是您必须添加对 dll 的引用。 如果不添加对新 dll 的引用(删除对旧 dll 的引用)、更改代码并重新编译,则无法更改绑定。
如果我们有 xml 配置,我根本不需要参考,也不需要重新编译。 现在我有使用 DI 将存储库传递给控制器的 MVC 应用程序。没有别的,然后用于添加绑定的 Ninject 代码使用存储库的具体实现。我仍然需要添加对包含实现的 dll 的引用。只需一行代码!
或者也许有可能使用 Ninject 来实现这一点?
【讨论】:
您希望实现什么目标?您要配置什么样的东西?动态选择策略 ?传递端口号?您可以提供更多关于您的想法的信息,以获得更好的答案[您可以接受:P]。
您需要拆分以下关注点:
appSettings
在第一个池中,在代码中执行此操作是正确的方法,我想不出 XML 会带来什么优势,尤其是。在强名称等的上下文中。
【讨论】: